JAVA-集合

Collection 
├List 
│├LinkedList 
│├ArrayList 
│└Vector 
│ └Stack 
└Set 
Map 
├Hashtable 
├HashMap 
└WeakHashMap 


List : 有序存储,允许重复
ArrayList : 线程不安全,不同步;线性表,底层是使用数组实现的,查询效率较高,缺点就是插入删除时非常麻烦;
LinkedList : 线程不安全,不同步,双向链表,插入速度高,访问数据效率低,缺点就是查找非常麻烦,适合新增和删除操作;
Vector : 使用了sychronized方法(线程安全,同步的
Set : 无序的,不允许重复
Map : 无序的,不允许重复,以键值对存储数据;
HashTable : 线程安全的,同步的,不允许 null 键和 null 值,比HashMap 慢,底层是哈希表数据结构,实现线程安全的方法是在修改数据时锁住整个hashtable,这样的话效率就会很低;
HashMap : 线程序不安全的,不同步的,没有分类或排序,允许一个null键和多个null值,底层是哈希表数据结构,初始size是16,然后每次扩容都是以2的n次幂扩容的;
ConcurrentHashMap:是一个线程安全的哈希表实现。它支持并发访问,可以在多线程环境下高效地读取和写入数据。
ConcurrentHashMap 的主要特点包括:
1. 线程安全:ConcurrentHashMap 的所有公共方法都通过同步块保护,确保多线程访问时的安全性。
2. 高并发性能:ConcurrentHashMap 采用分段锁技术,将数据分成多个段,每个段都有自己的锁。当多个线程访问不同段的数据时,不会发生锁竞争,从而提高了并发性能。
3. 动态扩容:ConcurrentHashMap 内部会根据当前负载情况动态调整段数量,以适应不同的负载需求。
4. 插入和删除操作:ConcurrentHashMap 支持线程安全地插入和删除元素。
5. 迭代顺序:ConcurrentHashMap 的迭代顺序与插入顺序一致,但不一定与访问顺序一致。
使用 ConcurrentHashMap 可以替代 Java 中的 Hashtable 或 synchronizedMap,提高多线程环境下的性能和并发性。

Collections :是个java.util下的类,它包含有各种有关集合操作的静态方法。 
Collection :是个java.util下的接口,它是各种集合结构的父接口。

Map遍历的四种方式:
Map集合没有直接取出元素的方法,而是先转成Set集合,在通过迭代获取元素
Map<String, String> map = new HashMap<String, String>();
map.put("1", "value1");
map.put("2", "value2");
map.put("3", "value3");

  //第一种:普遍使用,二次取值,通过Map.keySet遍历key和value
  System.out.println("通过Map.keySet遍历key和value:");
  for (String key : map.keySet()) {
   System.out.println("key= "+ key + " and value= " + map.get(key));
  }

  //第二种,通过Map.entrySet使用iterator遍历key和value
  System.out.println("通过Map.entrySet使用iterator遍历key和value:");
  Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
  while (it.hasNext()) {
   Map.Entry<String, String> entry = it.next();
   System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
  }

  //第三种:推荐,尤其是容量大时,通过Map.entrySet遍历key和value
  System.out.println("通过Map.entrySet遍历key和value");
  for (Map.Entry<String, String> entry : map.entrySet()) {
   System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
  }

  //第四种:遍历所有的value
  System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
  for (String v : map.values()) {
   System.out.println("value= " + v);
  }

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

J._.Rong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值