原文链接:https://blog.csdn.net/qq_35788725/article/details/82259013
Collections.sort可对集合进行排序
根据List里面某个字段进行出重筛选,此文是使用compareTo 比较器。请看代码:
public static void main(String[] args) {
//
List
oneList.add(new one(1, "11111"));
oneList.add(new one(2, "22222"));
oneList.add(new one(4, "33333"));
oneList.add(new one(3, "11111"));
oneList.add(new one(5, "44444"));
oneList.add(new one(6, "44444"));
oneList.add(new one(7, "55555"));
//=======比较器===========================================
Set
@Override
public int compare(one o1, one o2) {
//升序
int compareTo = o1.getName().compareTo(o2.getName());
//降序
//int compareTo = o2.getName().compareTo(o1.getName());
return compareTo;
}
});
treeSet.addAll(oneList);
//放入新的list 或者把当前的list进行close
List
for (one one : arrayList) {
System.out.println(one.getName());
}
}
}
//实体
class one{
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public one(int id, String name) {
super();
this.id = id;
this.name = name;
}
public one() {
super();
// TODO Auto-generated constructor stub
}
}
运行结果:
==========处理前========
11111
22222
33333
11111
44444
44444
55555
==========处理后========
11111
22222
33333
44444
55555
以上就是根据list的某个字段用compareto来去重。
以下是关于compareTo()的浅解:
compareTo(): 方法用于将 Number 对象与方法的参数进行比较。可用于比较 Byte, Long, Integer等。
该方法用于两个相同数据类型的比较,两个不同类型的数据不能用此方法来比较(runoob.com解释)。
compareTo():
如果指定的数与参数相等返回0。
如果指定的数小于参数返回 -1。
如果指定的数大于参数返回 1。
示例:
public static void main(String[] args) {
Integer a = 99;
System.out.println(a.compareTo(88));
System.out.println(a.compareTo(100));
System.out.println(a.compareTo(99));
}
运行结果:
1
-1
0