java集合知识点总结
2017-12-13 13:19
232 查看
java集合知识点总结
集合中主要包含3个接口在(package java.util(Collection,Map,Iterator))注:层次关系:实线边框为实现类,折现边框是抽象类,点线边框的是接口
Iterator接口
List接口存在iterator()方法,遍历集合中的元素Iterator主要有:1.hasNext()是否还有下一个元素。
2.next()返回下一个元素。
3.remove()删除当前元素
使用Iterator遍历例子:
public static void main(String[] args) { Dog ououDog = new Dog("欧欧", "雪娜瑞"); Dog yayaDog = new Dog("亚亚", "拉布拉多"); Dog meimeiDog = new Dog("美美", "雪娜瑞"); Dog feifeiDog = new Dog("菲菲", "拉布拉多"); List dogs = new ArrayList(); dogs.add(ououDog); dogs.add(yayaDog); dogs.add(meimeiDog); dogs.add(2, feifeiDog); //添加的时候,指定位置 System.out.println("使用Iterator遍历,所有狗狗的昵称和品种分别是:"); Iterator it = dogs.iterator(); //调用集合的iterator方法 while (it.hasNext()) { //循环遍历 Dog dog = (Dog) it.next(); //遍历出来的对象默认是 object 类型,需要转换 System.out.println(dog.getName()+"\t"+dog.getStrain()); } }
Collection接口
javaApi并没有实现该接口的实现类,但是提供了三个子接口分别是:List,Set,Queue。下面我们对这三个子接口进行分析:List接口是有序,可重复的集合,因为继承Collection的接口,其也继承了Collection的方法,以及自己所具有的方法,如图:
注:从表可以看出,List接口提供的适合于自身的常用方法均与索引有关,这是因为List集合为列表类型,以线性方式存储对象,可以通过对象的索引操作对象。
List接口的常用实现类有ArrayList和LinkedList,vertor,在使用List集合时,通常情况下声明为List类型,实例化时根据实际情况的需要,实例化为ArrayList或LinkedList。
ArrayList、LinkedList与Vector的对比:
1.ArrayList 是一个可改变大小的数组.当更多的元素加入到ArrayList中时,其大小将会动态地增长.内部的元素可以直接通过get与set方法进行访问,因为ArrayList本质上就是一个数组.
2.LinkedList 是一个双链表,在添加和删除元素时具有比ArrayList更好的性能.但在get与set方面弱于ArrayList
3.Vector 和ArrayList类似,但属于线程安全类。如果你的程序本身是线程安全的(thread-safe,没有在多个线程之间共享同一个集合/对象),那么使用ArrayList是更好的选择。
Map接口
Map接口(key-value)其主要的实现类是:HashMap、Hashtable、LinkedHashMap和TreeMap,下面我们对这四个接口进行分析:HashMap我们最常用的Map。它根据键的HashCode值来存储的,我们可以根据键来获取它的值,取值的顺序是随机的,因为键的值不可以重复,所以我们键的值可以为null,但是是唯一的值,允许多条记录的值为Null,是非同步的。
Hashtable跟HashMap唯一的区别就是Hashtable是线程同步的,所以导致与线程不能同时访问Hashtable,Hashtable写入的速度比HashMap慢。Hashtable不允许键或者值为Null。
LinkedHashMap保存了记录的插入顺序,在用Iteraor遍历LinkedHashMap时,先得到的记录肯定是先插入的,在遍历的时候会比HashMap慢,有HashMap的全部特性。
TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序(自然顺序),也可以指定排序的比较器,当用Iterator遍历TreeMap时,得到的记录是排过序的。不允许key值为空,非同步的;
总结
ArrayList,LinkedList,Vector的选取方式:1.当我们不考虑线程安全性,我们可以优先考虑arrayList,ListKedList.
2.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3. 对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
HashMap,Hashtable,TreeMap的选取方式:
1.当我们不考虑线程安全性,我们可以优先考虑HashMap,TreeMap。
2.HashMap通过hashcode对其内容进行快速查找,而TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap。
3.在Map 中插入、删除和定位元素,HashMap是最好的选择。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。
-参考连接:
https://www.cnblogs.com/leeplogs/p/5891861.html
相关文章推荐
- Java 中集合框架知识点的总结
- JAVA 面向对象和集合知识点总结
- JAVA知识点总结(二)集合框架
- Java集合知识点总结
- java常用到的知识点总结之集合、泛型
- JAVA中集合框架的知识点总结
- JAVA 面向对象和集合知识点总结
- JAVA常用知识点总结---集合篇
- java之集合知识点总结(文字版)
- 黑马程序员——java基础----集合框架知识点总结(一)
- 黑马程序员———Java基础------集合框架知识点总结(二)
- [Java]集合框架知识点总结(逐步更新)
- Java知识点总结(四)泛型和集合
- Java基础之集合知识点总结二
- JAVA 集合知识点总结
- JAVA知识点总结-10集合泛型
- JAVA 面向对象和集合知识点总结
- Java基础之集合知识点总结二
- java集合,ArrayList,LinkedList知识点总结