Java常用容器

  • 迭代器

    神马是迭代器?

    迭代器是一个对象,它的工作是遍历并选择序列中的对象,而客户端程序员不需要关系其底层的结构,是一种轻量级的对象。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  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值