首页 > 其他分享 >集合8 - Iterator迭代器

集合8 - Iterator迭代器

时间:2023-01-04 10:46:37浏览次数:29  
标签:map 迭代 iterator keys Iterator 集合

Iterator

Java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList 和HashSet等集合。迭代器 it 的三个基本操作是 next 、hasNext 和 remove。

  • 为什么要使用迭代器?
    • 普通的for遍历访问集合键值对数据时,要取出全部keys,再通过keys遍历访问所有values
    • 如果在遍历过程中修改了集合数据,已经取出的keys没修改,导致数据不一致
    • 迭代器Iterator在全集合发生变化时也会做出相应修改,保持数据的一致性
public class _Iterator {

    public static void main(String[] args) {
        //TODO .iterator() 通过迭代器遍历集合
        HashMap<String, Integer> map = new HashMap<>();
        map.put("a",1);
        map.put("b",2);
        map.put("c",3);

        Set<String> keys = map.keySet();
        Iterator<String> iterator = keys.iterator();

        //TODO .hasNext() 判断是否有下一条数据
        //     .next() 获取下一条数据
        //     .remove() 通过迭代器的remove方法删除数据保持数据一致性
        //且remove只能删除当次循环的数据,不能删除其他数据
        while (iterator.hasNext()){

            String key = iterator.next();
            if(key.equals("b")){
                iterator.remove();
            }

            System.out.println(map.get(key));
        }
    }

}

标签:map,迭代,iterator,keys,Iterator,集合
From: https://www.cnblogs.com/Ashen-/p/17024197.html

相关文章

  • 集合6 - HashMap
    HashMapHash--Hash算法根据key计算hash函数来存放数据、处理冲突(链地址法-红黑二叉树)=>无序存储,重复丢弃Map--键值对<key,value>中key是唯一的,作为value的索引......
  • 秋招之路-链表面试题集合(一)
    前言链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,链表的操作也离不开指针,指针又很容易导致出错。综合多方面的原因,链表题目在面试中占据着很重要的地位......
  • C++ 数学与算法系列之牛顿、二分迭代法求解非线性方程
    1.前言前文介绍了如何使用“高斯消元法”求解线性方程组。本文秉承有始有终的态度,继续介绍“非线性方程”的求解算法。本文将介绍2个非线性方程算法:牛顿迭代法。二......
  • leetcode-645. 错误的集合
    645.错误的集合-力扣(Leetcode)又用了哈希表,又用了数学计算,看题解有个位运算看不太懂funcfindErrorNums(nums[]int)[]int{m:=make(map[int]struct{},len(nu......
  • 秋招之路-链表面试题集合(二)
    [图]program2019-07-24前言链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,链表的操作也离不开指针,指针又很容易导致出错。综合多方面的原因,链表题目在面......
  • List集合的排序方式
    本文主要讲述Lsit集合的排序方式:1/**2*集合的排序方式:2种方式3*/4publicclassGenericWork{5publicstaticvoidmain(String[]args){......
  • 集合5 - Queue
    Queue-ArrayBlockingQueue底层实现--数组Array(数组)-Blocking(创建对象时的容量,多了就堵塞)-Queue(先进先出)publicclass_Queue{publicstaticvoidm......
  • 集合4 HashSet
    HashSet底层实现是数组+链表数据存放时的索引通过内部Hash算法确定--增加数据是无序的Hash算法--索引相同时根据内容是否相同决定是否丢弃,内容不相同则采用链地址......
  • java集合Collection操作
    CollectionallCollections=newArrayList();//集合里添加数据allCollections.add("testName");//判断即合理是否包含某特定的数据if(al......
  • 集合3 LinkedList
    LinkedList底层双向链表基础增删改查publicclass_LinkedList{publicstaticvoidmain(String[]args){//TODO集合-Collection-LinkedList=......