java集合你了解多少

高洛峰
发布: 2016-11-01 13:02:48
原创
2161人浏览过

用了java集合这么久,还没有系统的研究过java的集合结构,今天亲自画了下类图,总算有所收获。

2012072210005964.jpg

一、所有集合都实现了Iterable接口。

    Iterable接口中包含一个抽象方法:Iterator iterator();每个实现了这个方法的集合都会返回一个Iterator对象。

    Iterator:它包含三个方法,hashNext(),next(),remove()三种方法,通过它们可以实现集合的遍历和元素删除,例如:

立即学习Java免费学习笔记(深入)”;

    Collection list = new ArrayList();

   list.add("a");   

   list.add("b");  

    list.add("c");

    Iterator iterator = list.iterator();

    while (iterator.hasNext()) {  

         String element = iterator.next();

          System.out.println(element);//a b c

    }  

    System.out.println(list);//[a, b, c]      iterator = list.iterator();    iterator.next();

    iterator.remove();

    System.out.println(list);//[b, c]

    ps:为什么不直接实现Iterator接口呢?因为:Iterator会携带当前集合的位置信息,下次使用再使用的时候就非从0开始了;而Iterable接口每次都返回一个Iterator对象(通过内部类实现Iterator),各个迭代器之间互不影响。

 

二、ListIterator

 

    从AbstractList起封装了public ListIterator listIterator()方法,返回一个ListIterator,它在Iterator的基础上增加了add(),previous(),hasPrevious()等方法,可以实现双向遍历。

AbstractList list = new ArrayList();

list.add("a");

list.add("b");

list.add("c");

ListIterator iterator = list.listIterator(3);

while (iterator.hasPrevious()) {

String element = iterator.previous();

System.out.println(element);//c,b,a

}

 

三、比较

    ArrayList:允许存放重复元素,且元素是有序的,随机访问比较方便。

    LinkedList:链表实现,插入和删除时更优于ArrayList。

    HashSet:不允许重复元素且无序(散列函数对元素进行排序,可快速查询),允许null值。

    TreeSet:红黑树排序,可进行排序,包含的元素要实现Comparable接口并定义compareTo方法,不允许null值。

    HashMap:线程不安全,key和值都允许null,判断是否包含key要使用containsKey()方法,不允许重复key,hash数组的默认大小是16,而且一定是2的指数,重新计算hash值。

    HashTable:线程安全,key和value都不允许出现null值,不允许重复key,数组默认大小是11,增加的方式是 old*2+1,使用包含对象的hash值。

 

四、Collections和Arrays

    Collections:java.util下的一个专用类,它包含有各种有关集合操作的静态方法,可实现对各种集合的搜索、排序、线程安全化等操作。

    Arrays:java.util下的一个专用类,用来操作array ,提供搜索、排序、复制,转换等静态方法。

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号