双列集合

双列集合

java针对键值映射关系(一个键只能对应一个值)的数据,提供了双列集合(Map集合)来存储

所有Map集合的数据结构只跟键有关,与值无关。
键相同,值就会覆盖

Map接口常用实现类有HashMap、Hashtable、TreeMap、LinkedHashMap、TreeMap

1.HashMap

键的数据结构是哈希表,键唯一(靠重写equals()方法保证 合理重写hashCode方法可以减少元素碰撞)允许存储null键和null值 线程不安全 效率高

HashMap<String,String> map = new HashMap<>();
//当我们第一次存储键值对数据时  返回null  再一次存储一个键相同的数据时,会覆盖掉旧值,返回值是这个键所对应的旧值
String s1 = map.put("a","1");//null
String s2 = map.put("a","2");//1
map.put("c","3");
map.put("d","4");

//存储键是String值是Student类型的数据
HashMap<String,Student> hm = new HashMap<>();
hm.put("s001",new Student("zhangsan",23));
hm.put("s002",new Student("lisi",24));
hm.put("s003",new Student("wangwu",33));
System.out.println(hm);

//存键是Student 值是String的元素  默认比较键比较的是地址值 需要键Student类重写equals和hashcode方法
HashMap<Student,String> hm = new HashMap<>();
hm.put(new Student("zhangsan",23),"s001");//两个zhangsan都能存上去
hm.put(new Student("zhangsan",23),"s002");//两个zhangsan都能存上去
hm.put(new Student("lisi",23),"s003");



常用方法

HashMap<String,Student> hm = new HashMap<>();
hm.put("s001",new Student("zhangsan",23));
hm.put("s002",new Student("lisi",24));
hm.put("s003",new Student("wangwu",33));

//全部清空
hm.clear();
//删除某一键值对  
String s = hm.remove(key);根据键删除键值对,返回键所对应的值
//判断是否为空
hm.isEmpty();
//获取长度
hm.size();

//判断
//判断是否有该键、值
hm.containsKey(key);
hm.containsValue(value);

//遍历集合
1.根据 键找值 方法
String value = hm.get(key);
 //获取所有键的集合
Set<Stirng> KeySet = hm.keySet();
//遍历键集  键找值



2.获取出 键值对对象 的集合
Set<Map.Entry<String,String>> entries = hm.entrySet();
遍历键值对集合 通过键值对对象里的方法取出键和值


//获取所有值的集合
Collection<String> values = hm.values();



Hashtable和HashMap区别

Hashtable不允许null键和null值 线程安全效率低

2.LinkedHashMap

键唯一且有序 链表保证了键有序 哈希表保证键唯一

LinkedHashMap<Integer,String> lhm = new LinkedHashMap<>();
lhm.put();



3.TreeMap

键的数据结构 是二叉树 ,键唯一且可以对键排序

使用空参构造是自然排序 有参构造是比较器排序(参是比较器)

TreeMap 键不允许插入null

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值