要求:
在一个集合中存储无序并且重复的字符串,定义一个方法,使得该集合中的字符串保留重复并排序输出
分析:
1.用List集合接收存储重复的无序字符串.
2.定义一个方法,排序并保留重复:
a.创建TreeSet集合对象,因为String本身就具备比较功能,但是重复不会保留,所以我们用比较器
b.将list中所有的元素添加到TreeSet集合中,对其排序,保留重复
c.清空list集合
d.将TreeSet集合中排好序的元素添加到list中
3.把排好序的List集合中的数据打印输出.
代码:
import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.Scanner; import java.util.TreeSet; public class SortAndSaveTheSameData { //排序并保留重复 public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); /* list.add("aad"); list.add("sss"); list.add("aad"); list.add("sdddddd");*/ System.out.println("please input some string:"); Scanner sc = new Scanner(System.in); while (sc.hasNext()) { list.add(sc.nextLine()); // ctrl + z ==> 停止录入 } sort(list); System.out.println("after sort:"); System.out.println(list); sc.close(); } public static void sort(List<String> list) { TreeSet<String> ts = new TreeSet<>(new Comparator<String>() { //比较器 @Override public int compare(String s1, String s2) { int num = s1.compareTo(s2); return num == 0 ? 1 : num; } }); ts.addAll(list); //将list集合中所有元素添加到TreeSet集合中对其排序 list.clear(); //清空list集合 list.addAll(ts); //将TreeSet集合中排好序的元素添加到list集合中 } }
运行结果:
扫描二维码关注公众号,回复:
998923 查看本文章
https://github.com/striner/javaCode/blob/master/TreeSet%26ArrayList