Set排序方法记录

2022-11-14  本文已影响0人  随记草堂

在开发过程中,常常需要对数据按照指定要求排序。掌握一些常用的集合的排序还是非常有必要的。本篇文章针对Set的排序方法做一下简单的记录。

一. 创建TreeSet对象,重写比较器

public class SetMain {

public static void main(String[] args) {
Set<String> keys = new HashSet<>();
keys.add("377");
keys.add("655");
keys.add("342");
keys.add("101");
keys.add("222");
System.out.println("排序前:" + keys);
// 创建TreeSet对象,传入比较器,重写比较方法
TreeSet<String> treeKeys = new TreeSet<String>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
});
treeKeys.addAll(keys);
System.out.println("排序后:" + treeKeys);
}
}

二. 在第一种的基础上优化写法

public class SetMain {

public static void main(String[] args) {
Set<String> keys = new HashSet<>();
keys.add("377");
keys.add("655");
keys.add("342");
keys.add("101");
keys.add("222");
System.out.println("排序前:" + keys);
// 创建TreeSet对象
TreeSet<String> treeKeys = new TreeSet<String>(((o1,o2)->o1.compareTo(o2)));
treeKeys.addAll(keys);
System.out.println("排序后:" + treeKeys);
}
}

三. stream方式处理

public class SetMain {
public static void main(String[] args) {
Set<String> keys = new HashSet<>();
keys.add("377");
keys.add("655");
keys.add("342");
keys.add("101");
keys.add("222");
System.out.println("排序前:" + keys);
System.out.println("排序后:" + keys.stream().sorted(Comparator.naturalOrder()).collect(Collectors.toList()));

// System.out.println("排序后:" + keys.stream().sorted(new Comparator<String>() {

// @Override
// public int compare(String o1, String o2) {
// return o1.compareTo(o2);
// }
// }).collect(Collectors.toList()));
}
}

四. 保存到ArrayList里面,用Collections.sort()比较

public class SetMain {

public static void main(String[] args) {
Set<Integer> keys = new HashSet<>();
keys.add(377);
keys.add(655);
keys.add(342);
keys.add(101);
keys.add(222);
System.out.println("排序前:" + keys);
List<Integer> list = new ArrayList<Integer>();
for (Integer i : keys) {
list.add(i);
}
Collections.sort(list);
System.out.println("排序后:" + list);
}
}
上一篇 下一篇

猜你喜欢

热点阅读