public Set<Map.Entry<K,V>> entrySet()
获取Map集合中所有的“键值对”对象的集合(Set集合)。
- 就是返回一个集合,集合里存放的是对象,创建对象的类有两个属性,分别是 键和值 也即键值对。
- 其中Entry是属于Map的静态内部类,在创建Map对象的时候就会同时创建一个Entry对象,用来记录键与值的映射关系。
例题:
public class Test {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("一二", 20);
map.put("一", 18);
map.put("一二三四", 24);
map.put("一二三", 22);
// 获取到Map集合中所有的“键值对”对象的集合,存放到set集合中
Set<Map.Entry<String, Integer>> entries = map.entrySet();
System.out.println(entries);// 结果:[一=18, 一二三=22, 一二=20, 一二三四=24]
// 获取map集合的key,存放到set集合中,无序
Set<String> setKey = map.keySet();
System.out.println(setKey);// 结果:[一, 一二三, 一二, 一二三四]
// 采用Tree对上面Set进行排序
TreeSet<String> treeSet = new TreeSet<>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.length() - o2.length();
}
});
treeSet.addAll(setKey);
System.out.println(Arrays.toString(treeSet.toArray()));// 结果:[一, 一二, 一二三, 一二三四]
// 获取map集合的key,存放到Collection集合中,无序
Collection<Integer> values = map.values();
Object[] o = values.toArray();
System.out.println(values);// 结果:[18, 22, 20, 24]
// 对上面的数组进行排序
Arrays.sort(o);
System.out.println(Arrays.toString(o));// 结果:[18, 20, 22, 24]
// ----------以上是仅对key或value排序,以下对map排序----------
List<Map.Entry<String, Integer>> entryList = new ArrayList<>(map.entrySet());
Collections.sort(entryList, new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
// return o1.getValue() - o2.getValue();
return o1.getKey().length() - o2.getKey().length();
}
});
// System.out.println(entryList);// map集合根据value值大小排序,正序,结果:[一=18, 一二=20, 一二三=22, 一二三四=24]
System.out.println(entryList);// map集合根据key值字符串长度排序,正序,结果:[一=18, 一二=20, 一二三=22, 一二三四=24]
}
}