课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > java教程 > java集合你对它有多少了解呢?
  • java集合你对它有多少了解呢?

    发布:昆明Java培训      来源:java教程      时间:2016-11-04

  • 用了java集合这么久,但是你对它有多少了解呢?昆明Java培训机构的老师今天就给大家讲讲java的集合结构。

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

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

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

    Collection<String> list = new ArrayList<String>();

    list.add("a");  

    list.add("b"); 

    list.add("c");

    Iterator<String> 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<E> listIterator()方法,返回一个ListIterator,它在Iterator的基础上增加了add(),previous(),hasPrevious()等方法,可以实现双向遍历。

    AbstractList<String> list = new ArrayList<String>();

    list.add("a");

    list.add("b");

    list.add("c");

    ListIterator<String> 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培训官网(km.Java.tedu.cn)!

    推荐文章

上一篇:JAVA程序之外观模式

下一篇:HashSet HashTable与TreeSet

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:12/29

Java--零基础业余班

Java--零基础业余班

开班日期:12/29

Java--周末提升班

Java--周末提升班

开班日期:12/29

Java--零基础周末班

Java--零基础周末班

开班日期:12/29

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56