Map集合

Map集合

1.基本信息

包:java.util
类型:接口
public interface Map<K,V>
将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。

在这里插入图片描述
Map 集合主要是利用键值对来进行数据存储和查找,常用的子类有:

  • HashMap
  • LinkedHashMap
  • TreeMap

2.常用方法

使用迭代器
Iterator <Map.Entry> iterator = map.entrySet().iterator();

2.1增加元素

//将指定的值与此映射中的指定键关联。
put(K key, V value)
//从指定映射中将所有映射关系复制到此映射中
putAll(Map<? extends K,? extends V> m)

2.2删除元素

//如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。
remove(Object key)
//从此映射中移除所有映射关系(可选操作)。
clear()

2.3 修改元素

因为Map中的key不允许重复,所以当使用put方法二次赋值时就会重新覆盖修改

2.4查找元素

//返回此映射中的键-值映射关系数。
size()
//查询建是否存在,存在返回 true。
containsKey(Object key)
//查询一个值是否存在一个或多个键映射,存在返回 true。
containsValue(Object value)
//根据键查找对应的值,如果键不存在,返回null
get(Object key)
//获取所有的键key值,返回道一个set集合中
keySet()

2.5对比元素

//比较指定的对象与此映射是否相等
equals(Object o)
//是否为空
isEmpty()

2.6 转换

//转换为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]

3.子类HashMap

虽然数据存储是键值对,但HashMap中数据也是无序的,只是键值有一一对应的关系
HashMap中允许使用 null 值和 null 键
除了构造方法外其余方法与Map接口一致,它的key是hashSet

4.LinkedHashMap

它是HashMap的子类
在这里插入图片描述
它的key是linkedHashSet,它的迭代顺序是确定的

5.TreeMap

该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 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;
    }
  }

6.实例

需求:想要拿到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());
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值