java容器

java容器(Container)

1.什么是容器

容器是一个Java 所编写的程序,原先必须自行编写程序以管理对象关系,容器都会自动帮您做好。

2.java中三大容器

Java中的容器类型包括:List、Set和Map

mapsetlist
以键值对的方式存储 键相同时值会被覆盖不能存放相同的元素可以存放相同的元素
基于哈希表或者红黑树实现基于Map实现基于数组或者链表实现

3.java内置的容器类

Java内部的容器类主要分为两类:Collection(集合)与Map(映射)。

Collection

 set
  HashSet
  •  基于哈希表实现,底层使用HashMap来保存所有元素。
  •  不能保证迭代顺序。
  •  允许使用null元素。
  LinkedHashSet
  •  LinkedHashSet底层使用LinkedHashMap来保存所有元素,它继承于HashSet。
  •  内部使用双向链表维护插入顺序。
  TreeSet
  •  基于(TreeMap)红黑树实现 TreeSet非同步,线程不安全。
  •  TreeSet中的元素支持2种排序方式:自然排序 或者 根据创建TreeSet 时提供的 Comparator 进行排序。
 List
  ArrayList
  •  实现 List 接口、底层使用数组保存所有元素。
  •  相当于动态数组,支持动态扩容。
  •  不同步。
   Vector
  •  Vector可以实现可增长的对象数组。
  •  Vector 实现 List 接口,继承 AbstractList 类,同时还实现 RandmoAccess 接口,Cloneable 接口。
  •  Vector 是线程安全的 LinkedList LinkedList。
  LinkedList
  •  是基于链表实现的。
  •  所以它的插入和删除操作比 ArrayList更加高效。但也是由于其为基于链表的,所以随机访问的效率要比 ArrayList 差。
 Queue
  LinkedList
  •  可以用于实现双向队列。

Map(用于映射(键值对)问题处理)

 HashMap
  • HashMap根据键的HashCode来实现,访问速度较快,遍历顺序并不确定。
  • HashMap最多只允许一条记录的键为null,允许多条记录的值为null。
  • HashMap线程不安全。
  • 确保线程安全,可以用Collections的synchronizedMap方法使HashMap具有线程安全的能力,或者使用ConcurrentHashMap。
  • HashTable
  • HashTable是遗留类,多数功能与HashMap类似,继承自Dictionary类。
  • HashTable是线程安全的。也就是说任意时刻只有一个线程能够写HashTable。
  • HashTable的并发性不如ConcurrentHashMap,因为ConcurrentHashMap引入了分段锁。
  LinkedHashMap
  • 基于哈希表和链表实现,借助双向链表确保迭代顺序是插入的顺序。
 TreeMap
  • 基于红黑树实现 。
  • 默认按照键值得升序进行排序。
  • 在使用TreeMap时,key必须实现Comparable接口或者在构造TreeMap传入自定义的Comparator,
    否则会在运行时抛出java.lang.ClassCastException类型的异常。

4.容器体系图

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值