• Collection和Iterator接口


    **在Collection接口中声明了适用于Java集合(只包括Set、List和Queue)的通用方法。**如下表:

    方法描述
    boolean add(Object o)向集合中加入一个对象的引用
    void clear()删除集合中的所有对象,即不再持有这些对象的引用
    boolean contains(Object o)判断集合中是否持有特定对象的引用
    boolean isEmpty()判断集合是否为空
    Iterator iterator()返回一个Iterator对象,可用它来遍历集合中的元素
    boolean remove(Object o)从集合中删除一个对象的引用
    int size()返回集合中元素的数目
    Object[] toArray()T[] toArray(T[] a)返回一个数组,该数组包含集合中的所有元素

    Set接口、List接口和Queue接口都继承了Collection接口,而Map接口没有继承Collection接口,因此可以对Set对象、List对象和Queue调用以上方法,但是不能对Map对象调用以上方法。

    **Iterator接口隐藏底层集合的数据结构,向客户程序提供了遍历各种类型的集合的统一接口。**Iterator接口声明了如下方法:

    • hasNext():判断集合中的元素是否遍历完毕,如果没有,就返回true。
    • next():返回下一个元素。
    • remove():从集合中删除由next()方法返回的当前元素。

    在Vistor类的print()方法中,利用Iterator来遍历集合:

    package test221121;
    import java.util.ArrayDeque;
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import java.util.Queue;
    import java.util.Set;
    
    public class Vistor {
        public static void print(Collection<? extends Object> c){
            Iterator<? extends Object> it = c.iterator();
            while(it.hasNext()){
                Object element = it.next();
                System.out.println(element);
            }
        }
    
        public static void printWithForFeach(Collection<? extends Object> c){
            for(Object element:c)
                System.out.println(element);
        }
    
        public static void main(String[] args) {
            Set<String> set = new HashSet<String>();
            set.add("Tom");
            set.add("Marry");
            set.add("Jack");
            print(set);
    
            List<String> list = new ArrayList<String>();
            list.add("Linda");
            list.add("Mary");
            list.add("Rose");
            print(list);
    
            Queue<String> queue = new ArrayDeque<String>();
            queue.add("Tome");
            queue.add("Mike");
            queue.add("Jack");
            print(queue);
    
            Map<String,String> map = new HashMap<String,String>();
            map.put("M", "男");
            map.put("F", "女");
            print(map.entrySet());
    
            printWithForFeach(set);
            printWithForFeach(list);
            printWithForFeach(queue);
            printWithForFeach(map.entrySet());
    
        }
        
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
  • 相关阅读:
    【Linux】Ubuntu升级nodejs版本
    理解React页面渲染原理,如何优化React性能?
    ​力扣解法汇总1331-数组序号转换
    【Linux kernel/cpufreq】framework ----初识
    质量平台-方案设计
    神经网络放大图片,神经网络AI滤镜
    【云原生 | 20】Docker资源限制详解
    两级页表(单级页表存在的问题,两级页表的地址转换)
    [杂谈]-2023年实现M2M的技术有哪些?
    Android--碎片
  • 原文地址:https://blog.csdn.net/weixin_50357864/article/details/127963904