List去重
方法1:set集合去重,不打乱顺序
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("aaa");
list.add("aba");
list.add("aaa");
Set<String> set = new HashSet<String>();
List<String> newList = new ArrayList<String>();
for (String s: list) {
if (set.add(s)) {
newList.add(s);
}
}
System.out.println("去重后的集合: " + newList);
方法2:遍历后判断赋给另一个list集合
List<String> newList = new ArrayList<String>();
for (String s : list) {
if (!newList.contains(s)) {
newList.add(s);
}
}
System.out.println("去重后的集合: " + newList);
方法3:set去重
Set<String> set = new HashSet<String>();
List<String> newList = new ArrayList<String>();
set.addAll(list);
newList.addAll(set);
System.out.println("去重后的集合: " + newList);
方法4:set去重(代码缩减为一行)
List<String> newList = new ArrayList<String>(new HashSet<String>(list));
System.out.println("去重后的集合: " + newList);
方法5:用JDK1.8 Stream中对List进行去重:list.stream().distinct();
List<String> a = new ArrayList<> (); a.add("a"); a.add("b"); a.add("b"); List list=(List) a.stream().distinct().collect(Collectors.toList()); System.out.println(list);
List排序
使用Collections工具类的sort(List<T> list, Comparator<? super T> c)方法对List集合进行自定义排序
@Test
public void listCustomSort() {
List<Person> list = new ArrayList<Person>();
Person p1 = new Person("1", "p1" , 12);
Person p2 = new Person("2", "p2" , 9);
Person p3 = new Person("3", "p3" , 13);
Person p4 = new Person("4", "p4" , 9);
list.add(p1);
list.add(p2);
list.add(p3);
list.add(p4);
System.out.println(list);
System.out.println("------------------");
Collections.sort(list, new Comparator<Person>() {
// 按年龄从大到小排序;
//compareto就是比较两个数据的大小关系 大于0表示前一个数据比后一个数据大, 0表示相等,小于0表示第一个数据小于第二个数
@Override
public int compare(Person p1, Person p2) {
return p1.getAge() == p2.getAge() ? 0 : (p1.getAge() < p2.getAge() ? 1 : -1);
}
});
System.out.println(list);
}