我有一个列表,用于将我的整数值存储为对,初始化如下
public static List<Entry<Integer,Integer>> bucketPairList= new ArrayList();
我需要实现的是从列表中删除所有重复的整数对(键和值都可能重复。我需要删除它们的类似对)并根据键对其进行排序。 有什么建议我怎么能得到它?
答案 0 :(得分:0)
以下是我使用Set去除重复的方法。
将“Entry”定义为(我将其重命名为Data,因为它与Map.Entry混淆):
public class Data <T, U> {
private T data1;
private U data2;
public Data(T d1, U d2) {
this.data1 = d1;
this.data2 = d2;
}
@Override
public boolean equals(Object object) {
if(!(object instanceof Data)) return false;
Data<T, U> newData = (Data<T, U>) object;
return data1.equals(newData.data1) && data2.equals(newData.data2);
}
@Override
public int hashCode() {
int result = data1 != null ? data1.hashCode() : 0;
result = 31 * result + (data2 != null ? data2.hashCode() : 0);
return result;
}
public String toString() {
return data1.toString() + " " + data2.toString();
}
}
然后使用HashSet,因为此测试显示:
public class DataTest {
@Test
public void runTest() {
Set<Data<Integer, Integer>> set = new HashSet<Data<Integer, Integer>>();
set.add(new Data<Integer, Integer>(1,2));
set.add(new Data<Integer, Integer>(1,2));
set.add(new Data<Integer, Integer>(1,3));
set.add(new Data<Integer, Integer>(2,4));
Assert.assertEquals(3, set.size());
for(Data<Integer, Integer> data : set) {
System.out.println(data.toString());
}
}
}
结果是:
1 3
1 2
2 4
希望这很有用。