包:java.util 类型:接口 public interface Map<K,V> 将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
Map 集合主要是利用键值对来进行数据存储和查找,常用的子类有:
HashMapLinkedHashMapTreeMap使用迭代器 Iterator <Map.Entry> iterator = map.entrySet().iterator();
//将指定的值与此映射中的指定键关联。 put(K key, V value) //从指定映射中将所有映射关系复制到此映射中 putAll(Map<? extends K,? extends V> m)
//如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。 remove(Object key) //从此映射中移除所有映射关系(可选操作)。 clear()
因为Map中的key不允许重复,所以当使用put方法二次赋值时就会重新覆盖修改
//返回此映射中的键-值映射关系数。 size() //查询建是否存在,存在返回 true。 containsKey(Object key) //查询一个值是否存在一个或多个键映射,存在返回 true。 containsValue(Object value) //根据键查找对应的值,如果键不存在,返回null get(Object key) //获取所有的键key值,返回道一个set集合中 keySet()
//比较指定的对象与此映射是否相等 equals(Object o) //是否为空 isEmpty()
//转换为set集合形式 entrySet()
Map map = new HashMap(); map.put("sj",12); map.put("sd",78); System.out.println(map.entrySet()); >>> [sd=78, sj=12]//将values值转换为collection values()
Map map = new HashMap(); map.put("sj",12); map.put("sd",78); System.out.println(map.values()); >>> [78, 12]虽然数据存储是键值对,但HashMap中数据也是无序的,只是键值有一一对应的关系 HashMap中允许使用 null 值和 null 键 除了构造方法外其余方法与Map接口一致,它的key是hashSet
它是HashMap的子类 它的key是linkedHashSet,它的迭代顺序是确定的
该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。
TreeMap treeMap = new TreeMap(new Comparator() { @Override public int compare(Object o1, Object o2) { return 0; } })如果TreeMap中存放了具体的类对象,可以利用类继承Comparator接口,然后重写compare方法,重新定义比较方式,这样在放入map中时会自动进行排序操作,从map中拿出来的数据也是按照比较器有序的,具体代码如下:
class Cust implements Comparator{ @Override public int compare(Object o1, Object o2) { //因为针对的就是Cust类,所以可以进行强转,对Cust对象的具体值和方法进行比较 Cust cust1 = (Cust)(o1); Cust cust2 = (Cust)(o2); return cust1.age-cust2.age; } }需求:想要拿到HashMap中存在的具体类对象的各种属性值
Map map = new HashMap(); map.put(1,new Cust("asd",5)); map.put(2,new Cust("asd",5)); map.put(3,new Cust("asd",5)); Collection collection = map.values(); Iterator iterator = collection.iterator(); while (iterator.hasNext()){ Cust cust = (Cust)(iterator.next()); System.out.println(cust.getAge()); }