PHP技术那点事
全部
技术
PHP
MySQL
前端
Linux
JAVA
退出
编辑文章
选择分类
PHP
MySQL
前端
Linux
Java
工具
选择专栏
设计模式
java基础
Angular学习
Java面试题
描述:
封面图上传 :
+
点击上传图片
### 集合类 存放于Java.util包中,主要有3种:set(集)、list(列表包含Queue)和map(映射)。 1. Collection:Collection是集合List、Set、Queue的最基本的接口。 2. Iterator:迭代器,可以通过迭代器遍历集合中的数据 3. Map:是映射表的基础接口 #### java中的list 1. arrayList - 排列有序,可重复 - 底层使用数组 - 查询快,增删慢 - 空间不足时,默认拓展当前容量的*1.5 +1 - 非线程安全 2. Vector - 排列有序,可重复 - 底层使用数组 - 查询快,增删慢 - 空间不足时,默认拓展当前容量的一倍容量 - 线程安全,效率低 3. LinkedList - 排列有序,可重复 - 底层使用双向循环链表数据结构 - 查询数据慢,增删快 - 非线程安全 #### Java中三种Set类型 Set接口的特性,Set接口继承了Collection接口,Set集合中不能包含重复的元素,每个元素必须是唯一的,你只要将元素加入set中,重复的元素会自动移除。 1. hashSet - 排列无需,不可重复 - 底层使用hash表实现 - 存取速度快 2. TreeSet - 不可重复,但是排列有序 - 底层使用二叉树实现 - Integer和String对象都可以进行默认的TreeSet排序,而自定义类的对象是不可以的,自己定义的类必须实现Comparable接口,并且覆写相应的compareTo()函数,才可以正常使用· - 在覆写compare()函数时,要返回相应的值才能使TreeSet按照一定的规则来排序 - 比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。 3. LinkedHashSet - hash表存储,双向链表记录插入顺序 - 内部是linkedHashMap 总结一下,如过你的需求是要一个能快速访问的Set,那么就要用HashSet,如果你要一个排序Set,那么你应该用TreeSet,如果你要记录下插入时的顺序时,你应该使用LinedHashSet。 #### Java中Map 1. HashMap - 根据键的HashCode 值存储数据,根据键可以直接获取它的值 - 访问速度快 - 最多只允许一条记录的键为Null(多条会覆盖);允许多条记录的值为 Null - 非同步 2. TreeMap - 能够把它保存的记录根据键(key)排序,默认是按升序排序 - 不允许key的值为null - 可以指定排序的比较器,当用Iterator遍历TreeMap时,得到的记录是排过序的 - 在使用TreeMap时,key必须实现Comparable接口或者在构造TreeMap传入自定义的Comparator,否则会在运行时抛出java.lang.ClassCastException类型的异常。 - 非同步 3. Hashtable - 写入时会比较慢 - key和value的值均不允许为null - 线程同步,任一时间只有一个线程能写Hashtable 4. LinkedHashMap - 保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的. - key和value均允许为null - 遍历比HashMap慢 - 非同步
保存文章