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->加油