java中常见集合的遍历(Iterator的使用)

java中常见集合的遍历

java中常见的集合的遍历,其实也就是iterator的使用,或者说这块重点在于使用iterator的遍历。

下面开讲:

1、普通集合:Queue、Stack、Set,直接new个普通iterator遍历就行,下面以set举例

    private static void testSetIterator() {
        Set<Integer> set = new HashSet<>();
        for (int i = 0; i < 10; i++) {
            set.add(i);
        }


        /**
         * 集合一般的遍历方式。Queue、Stack也可以这样。就不多写了。
         */
        Iterator<Integer> iterator = set.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }

    }

2、map的遍历

map的遍历有三种,只遍历key,只遍历value,遍历Entry

    private static void testMapIterator() {
        Map<Integer, Integer> map = new HashMap<>();

        for (int i = 0; i < 10; i++) {
            map.put(i, i + 10);
        }

        /**
         * 遍历EntrySet
         * 拿到k,v
         */
        Iterator<Map.Entry<Integer, Integer>> kVIterator = map.entrySet().iterator();
        while (kVIterator.hasNext()) {
            Map.Entry<Integer, Integer> entry = kVIterator.next();
            System.out.println("k & v :" + entry.getKey() + " " + entry.getValue());

        }
        System.out.println();


        /**
         * 遍历key
         */
        Iterator<Integer> keyIterator = map.keySet().iterator();
        while (keyIterator.hasNext()) {
            System.out.println("key is " + keyIterator.next());
        }

        /**
         * 遍历value
         */
        Iterator<Integer> valueIterator = map.values().iterator();
        while (valueIterator.hasNext()) {
            System.out.println("v  " + valueIterator.next());
        }
    }

3、list的遍历

list的遍历有两种,普通的iterator遍历,以及list独有的ListIterator的遍历

 private static void testListIterator() {
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            list.add(i);
        }


        Iterator<Integer> iterator = list.iterator();
        while (iterator.hasNext()) {
            System.out.println("list normal" + iterator.next());
        }


        /**
         *  LIstIterator是一个更加强大的Iterator的子类型,它只能用于各种List类的访问,尽管Iterator只能向前移动,
         *  但是ListIterator可以双向移动,它还可以产生相对于迭代器在列表指向的当前位置的前一个和后一个元素的索引,
         *  并且可以使用set()方法替换它访问过的最后一个元素. 你可以通过ListIterator()方法产生一个指向List开始处的ListIteraor,
         *  并且还可以通过调用ListIterator(n)方法创建一个一开始就指向索引列表n的元素处的ListIterator
         *
         *
         * package java.util;
         *
         * public interface ListIterator<E> extends Iterator<E> {
         *     boolean hasNext();     //检查是否有下一个元素
         *     E next();              //返回下一个元素
         *     boolean hasPrevious(); //check是否有previous(前一个)element(元素)
         *     E previous();          //返回previous element
         *     int nextIndex();       //返回下一element的Index
         *     int previousIndex();   //返回当前元素的Index
         *     void remove();         //移除一个elment
         *     void set(E e);         //set()方法替换访问过的最后一个元素 注意用set设置的是List列表的原始值
         *     void add(E e);         //添加一个element
         * }
         */
        ListIterator<Integer> listIterator = list.listIterator();

        /**
         * 游标向后
         */
        while (listIterator.hasNext()) {
            System.out.println(" listiterator,next  " + listIterator.next());
        }

        /**
         * 游标向前遍历
         */
        while (listIterator.hasPrevious()) {
            System.out.println(" listiterator,previous  " + listIterator.previous());
        }


    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

约翰兰博之西安分博

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值