JAVA-List对象某个字段去重的算法代码
List对象去重的算法 Java code?1 return new ArrayList<T>(new LinkedHashSet<T>(list))
我想要不是去除重复对象,而是去除对象中某个字段一样的对象。
举个例子:
Java code? public static void main(String[] args) { class Temp{ private int a; private String b; private BigInteger cBigInteger; public int getA() { return a; } public void setA(int a) { this.a = a; } public String getB() { return b; } public void setB(String b) { this.b = b; } public BigInteger getcBigInteger() { return cBigInteger; } public void setcBigInteger(BigInteger cBigInteger) { this.cBigInteger = cBigInteger; } } Temp temp1 = new Temp(); temp1.setA(10); temp1.setB("hehe"); temp1.setcBigInteger(new BigInteger("1111111111111111111111111")); Temp temp2 = new Temp(); temp2.setA(10); temp2.setB("hehe"); temp2.setcBigInteger(new BigInteger("1111111111111111111111111")); Temp temp3 = new Temp(); temp3.setA(10); temp3.setB("hehe3"); temp3.setcBigInteger(new BigInteger("1111111111111111111111111")); Temp temp4 = new Temp(); temp4.setA(10); temp4.setB("hehe4"); temp4.setcBigInteger(new BigInteger("1111111111111111111111111")); List<Temp> list = new ArrayList<Temp>(); list.add(temp1); list.add(temp2); list.add(temp3); list.add(temp4); //如何去除字段b重复的对象呢? }
我想去掉Temp对象中字段b重复的对象,上面的例子就是temp1和temp2。
除了使用双重for循环从第一个开始逐个和后面的遍历remove之外,有没有什么快速的方法呢?
需要转换成 ArrayList 在用用hashcode 和 hashset 去重复
map呢 键值 无重复数据。 把您要去重的那个字段作为键 你可以用HashSet来做,然后重写hashCode以及equals方法.实现一个自定义的比较方式.然后把这个List直接new成HashSet就可以了.
|