Java常用容器

来源:互联网 发布:ecjia到家源码下载 编辑:程序博客网 时间:2024/06/16 17:43
  • 迭代器

    神马是迭代器?

    迭代器是一个对象,它的工作是遍历并选择序列中的对象,而客户端程序员不需要关系其底层的结构,是一种轻量级的对象。Java中所有的容器对象都实现了Iterable接口,该接口只有一个方法。

     Iterator<T> iterator()   // 返回一个在一组 T 类型的元素上进行迭代的迭代器。 

    这里返回的Iterator对象就是迭代器。其实际也是一个接口,内部只有三个方法

     boolean hasNext()   //如果仍有元素可以迭代,则返回 true。  E next()           //返回迭代的下一个元素。  void remove()      //从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。   //如果要调用remove其之前必须先调用next

    ListIterator

    普通 的Iterator只能进行单向的向前移动,如果想要双向移动,可以使用ListIterator。通过调用listIterator()方法可以获取一个listIterator对象。

Java中的常用容器

  1. set

    set中不保存相同的元素(通过对象的eaqul()方法判断是否相同),当你向Set添加多个相同的元素时,只会添加一个进去。

    Set<String> set=new HashSet<String>();       for(int i=0;i<10;i++){           set.add(new String("尼玛"));       }       Iterator<String> iterator=set.iterator();       while(iterator.hasNext()){           String str=iterator.next();           System.out.println(str);       }//结果只打印了一行 尼玛  

    HashSet的输出是没有顺序而言的,内部采用Hash散列的方式存储数据。如果想要存储的数有序排列,可以使用TreeSet,其数据存储在红-黑树数据结构之中,插入的数据会按照一定顺序排序。

  2. Map

    map可以通过保存键值对的形式保存数据。是一种很强大的数据结构。其键与值可以是各种数据类型(包括map),重复的key方法,则后让放入的会覆盖前面的(通过对对象的equals()方法判断。)

    Map<String,Integer> map=new HashMap<>();    for(int i=0;i<10000;i++){        map.put(new String("wifi"), i);    }System.out.println(map);//结果输出为{wifi=9999}
  3. Queue(接口)

    队列是一个先进先出的容器,其内部元素可重复 , LinkedList是其一个典型的实现类。其常用方法如下:

    boolean add(E e) //将指定的元素插入此队列(如果立即可行且不会违反容量限制),在成功时返回 true,如果当前没有可用的空间,则抛出 IllegalStateException。 E element()         //获取,但是不移除此队列的头。 boolean offer(E e) //将指定的元素插入此队列(如果立即可行且不会违反容量限制),当使用有容量限制的队列时,此方法通常要优于 add(E),后者可能无法插入元素,而只是抛出一个异常。 E peek()            // 获取但不移除此队列的头;如果此队列为空,则返回 null。 E poll()            //获取并移除此队列的头,如果此队列为空,则返回 null。 E remove()      //获取并移除此队列的头。 

    其另一个重要的实现类是PriorityQueue,其弹出的下一个元素是优先级最高的那个元素(不再是先进先出)

    PriorityQueue<Integer> queue=new PriorityQueue<>();    Random random=new Random();    for(int i=0;i<10;i++){        queue.add(random.nextInt(20));    }    while(!queue.isEmpty()){        System.out.print(queue.poll()+"  ");    }//结果输出为 :4  6  7  7  10  11  14  16  18  19  

0 0
原创粉丝点击