存储不同类型的两个元素的最佳方法是什么

时间:2019-03-25 12:37:12

标签: java

我有不同类型的不同元素,例如:

<0, "none">, <0, "constructor">, <0, "none">, <0, "method">, <1, "method">, <2, "constructor">, <2, "method">, <2, "constructor">

我想将它们存储在地图或任何其他数据结构中而不删除重复项。我将地图实现如下:

Map<Integer, String> m1 = new HashMap<>();
m1.put(0, "none");
m1.put(0, "constructor");
m1.put(1, "none");
m1.put(0, "method");

打印m1的结果是{0=method, 1=method, 2=constructor},我不需要。我想展示所有要素。

3 个答案:

答案 0 :(得分:5)

创建如下所示的对象

public class MyData {
private int id;
private String type;
// Constructor
// getters and setters
}

然后创建MyData对象并将其存储在列表中

List<MyData> myData = new ArrayList<MyData>();

MyData data1 = new MyData(0, "none"); 
MyData data2 = new MyData(1, "method"); 
MyData data3 = new MyData(2, "constructor"); 
MyData data4 = new MyData(0, "none");

myData.add(data1); 
myData.add(data1); 
myData.add(data1); 
myData.add(data1);

答案 1 :(得分:3)

Guava有一个multimap类,非常适合此类问题。看看multimap

答案 2 :(得分:0)

Map中的键必须是唯一的,因此一旦调用m1.put(0, "constructor");,您将替换映射到0的先前值"none"。使用多图(​​Map<Integer,List<String>>),或使用Pair的列表/集合。