List,Map,Set实现有序集合

List为有序集合,插入顺序即为储存顺序

默认有序

List<String> list=new ArrayList();
list.add("0");
list.add("4");
list.add("2");
list.add("8");
System.out.println(list.toString());

输出结果为:[0, 4, 2, 8]

Collections.sort(list): Collections可提供为集合排序的方法

List<String> list=new ArrayList();
list.add("0");
list.add("4");
list.add("2");
list.add("8");
Collections.sort(list);
System.out.println(list.toString());

输出结果为:[0, 2, 4, 8]

list.sort()指定比较器进行排序

List<String> list=new ArrayList();
list.add("0");
list.add("4");
list.add("2");
list.add("8");
list.sort(new Comparator<String>(){
      @Override
        public int compare(String o1, String o2) {
          return o2.compareTo(o1);
      }
   });
System.out.println(list.toString());

输出结果为:[8, 4, 2, 0]

Set集合实现有序

HashSet实现类根据内部元素的hashCode值默认排序

Set<String> set=new HashSet<>();
set.add("武汉");
set.add("加油");
set.add("中国");
set.add("@@");
System.out.println(set.toString());

输出结果为:[@@, 加油, 中国, 武汉]

LinkedHashSet可实现输出顺序为插入顺序

Set<String> set=new LinkedHashSet<>();
set.add("c");
set.add("i");
set.add("o");
set.add("a");
System.out.println(set.toString());

输出结果为:[c, i, o, a]

TreeSet实现了SortedSet接口,可对其存值做排序(要求集合元素可比较的)

Set<String> set=new TreeSet<>();
set.add("武汉");
set.add("加油");
set.add("中国");
set.add("@@");
System.out.println(set.toString());

输出结果为:[@@, 中国, 加油, 武汉]

也可指定比较器进行比较

Set<String> set=new TreeSet<>(new Comparator<String>() {
         @Override
         public int compare(String o1, String o2) {
              return o2.compareTo(o1);
         }
});
set.add("武汉");
set.add("加油");
set.add("中国");
set.add("@@");
System.out.println(set.toString());

输出结果为:[武汉, 加油, 中国, @@]

Map实现有序集合

LinkedHashMap输出顺序为插入顺序

Map<String,String> map=new LinkedHashMap<>();
map.put("中国", "加油");
map.put("盂县", "加油");
map.put("山西", "加油");
map.forEach((k,v)->{
System.out.println("k->"+k+"v->"+v);
});

输出结果为:k->中国v->加油k->盂县v->加油k->山西v->加油

TreeMap实现了SortedMap接口,可根据键的自然大小排序

Map<String,String> map=new TreeMap<>(new Comparator<String>() {
      @Override
        public int compare(String o1, String o2) {
             return o2.compareTo(o1);
       }
});
map.put("中国", "加油");
map.put("盂县", "加油");
map.put("山西", "加油");
map.forEach((k,v)->{
 System.out.println("k->"+k+"v->"+v);
});

输出结果为:k->盂县v->加油k->山西v->加油k->中国v->加油

发布了27 篇原创文章 · 获赞 1 · 访问量 857

猜你喜欢

转载自blog.csdn.net/weixin_44971379/article/details/104642363