在开发过程中,常常需要对数据按照指定要求排序。掌握一些常用的集合的排序还是非常有必要的。本篇文章针对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);
}
}
网友评论