Set和Map概论
Set
- 底层调用的是对应的map
- add(E e)、remove(Object o)、contains(Object o)
- TreeSet是排序的集合,而不是有序集合,Set集合没有下标。
map(key和value都是引用类型)
-
Map接口常用方法
public interface Map<K,V> {//是最顶层的一个借口 int size(); boolean isEmpty(); void clear(); boolean containsKey(Object key);//是否包含某个key boolean containsValue(Object value);//是否包含某个value V get(Object key);//通过键获取值 V put(K key, V value);//添加键值对 V remove(Object key);//移除对应的键值对 Set<K> keySet();//获取map集合的所有key Collection<V> values();//获取map集合的所有value Set<Map.Entry<K, V>> entrySet();//将map集合转换成set集合,转换成Map.Entry<K,V>类型 int hashCode(); boolean equals(Object o); default V getOrDefault(Object key, V defaultValue) { V v; return (((v = get(key)) != null) || containsKey(key)) ? v : defaultValue; } }interface Entry<K,V> { //Map的内部接口 K getKey(); V getValue(); V setValue(V value); }
HashMap的遍历
- 第二种方式用entrySet效率更高
-
//1.获取所有的Key,通过key来遍历 Set<Integer> keys = map.keySet(); //迭代器遍历 Iterator<Integer> it = keys.iterator(); while (it.hasNext()) { int key = it.next(); String value = map.get(key); System.out.println(key + "=" + value); } //foreach遍历 for (Integer key: keys) { System.out.println(key + " = " + map.get(key)); } -
//2.用entrySet方法遍历 Set<Map.Entry<Integer, String>> set = map.entrySet(); //迭代器遍历 Iterator<Map.Entry<Integer, String>> its = set.iterator(); while (its.hasNext()) { Map.Entry<Integer, String> node = its.next(); Integer key = node.getKey(); String value = node.getValue(); System.out.println(key + " = " + value); } //foreach for (Map.Entry<Integer, String> node: set) { System.out.println(node.getKey() + "--->" + node.getValue()); }

浙公网安备 33010602011771号