• 【Java集合】Collection接口常用方法


    Collection接口和常用方法

    Collection接口实现类的特点:

    public interface Collection<E> extends Iterable<E>
    
    • 1
    1. Collection实现子类可以存放多个元素,每个元素可以是Object
    2. 有些Collection的实现类,可以存放重复的元素,有些不可以;
    3. 有些Collection的实现类,有些是有序的(List),有些则不是有序(Set);
    4. Collection接口没有直接的实现子类,是通过它的子接口List和Set来实现的;

    > Collection接口常用方法

    • add : 添加单个元素;
    • remove : 删除指定元素;
    • contains : 查找元素是否存在;
    • size : 获取元素个数;
    • isEmpty : 判断是否为空;
    • clear : 清空;
    • addAll : 添加多个元素;
    • containaAll :查找多个元素是否都存在;
    • removeAll : 删除多个元素;

    以 ArrayList 实现类来演示:

    import java.util.ArrayList;
    import java.util.List;
    
    public class CollectionMethod {
        public static void main(String[] args) {
            //1.add:添加单个元素
            List list = new ArrayList();
            list.add("字符串");
            list.add(128);//list.add(new Integer(10))
            list.add(true);
            System.out.println("list="+list);//list=[字符串, 128, true]
    
            //2.remove:删除指定元素
            //list.remove(0);//删除第一个元素
            //System.out.println("list="+list);//list=[128, true]
            list.remove("字符串");//指定删除某个元素
            System.out.println("list="+list);//list=[128, true]
    
            //3.contains:查找某个元素是否存在
            System.out.println(list.contains(128));//true
    
            //4.size:返回元素个数
            System.out.println(list.size());//2
    
            //5.isEmpty:判断是否为空
            System.out.println(list.isEmpty());//false
    
            //6.clear:清空
            list.clear();
            System.out.println("list= "+list);//list= []
    
            //7.addAll:添加多个元素
            ArrayList list2 = new ArrayList();
            list2.add("开心");
            list2.add("每");
            list2.add(1);
            list2.add("天");
            list.addAll(list2);//传入一个集合
            System.out.println("新的list:"+list);//新的list:[开心, 每, 1, 天]
    
            //8.containsAll:查找多个元素是否存在
            System.out.println(list.containsAll(list2));//true
    
            //9.removeAll:删除多个元素
            list.removeAll(list2);
            System.out.println("list="+list);//list=[]
        }
    }
    
    • 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

    > Collection接口遍历元素:使用Iterator(迭代器)

    1. Iterator对象称为迭代器,主要用于遍历Collection集合中的元素;
    2. 所有实现了Collection接口的集合类都有一个 iterator( ) 方法,用以返回一个实现了Iterator接口的对象,即返回一个迭代器;
    3. Iterator仅用于遍历集合,Iterator本身并不存放对象;
    迭代器执行原理:
    Iterator iterator = new coll.iterator(); 得到一个集合迭代器
    hasNext() :判断是否还有下一个元素
    while(iterator.hasNext()){
    	next()作用:指针下移,将下移后以后集合位置上的元素返回
    	System.out.println(iterator.next());
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    每 next() 一次,箭头下移一次:
    在这里插入图片描述

    注意:在调用 iterator.next( ) 方法之前,必须要调用iterator.hasNext( ) 进行检测;若不调用,且下一条记录无效,直接调用 iterator.next( ) 会抛出 NoSuchElementException异常。

    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Iterator;
    
    public class CollectionIterator {
        public static void main(String[] args) {
            Collection col = new ArrayList();
    
            col.add(new Book("三国演义","罗贯中",10.1));
            col.add(new Book("红楼梦","曹雪芹",34.6));
            col.add(new Book("西游记","吴承恩",28.8));
            System.out.println("col : "+col);
    //col : [Book{name='三国演义', author='罗贯中', price=10.1}, Book{name='红楼梦', author='曹雪芹', price=34.6}, Book{name='西游记', author='吴承恩', price=28.8}]
            
            //遍历 col
            //1.先得到col集合对应的迭代器
            Iterator iterator = col.iterator();
            
            //2.使用while循环遍历
            //快捷键快速生成while循环 输入itit回车即可
            //crtl+j 可以查看当前所有快捷键
            while(iterator.hasNext()){ //判断是否还有数据
                //next()返回下一个元素,类型是Object
                Object obj = iterator.next();
                System.out.println(obj);
                //Book{name='三国演义', author='罗贯中', price=10.1}
                //Book{name='红楼梦', author='曹雪芹', price=34.6}
                //Book{name='西游记', author='吴承恩', price=28.8}
            
            //3.当退出while循环后,此时iterator迭代器指向最后的元素
            //iterator.next(); --> NoSuchElementException
            //4.若还要使用迭代器,需要重置迭代器
            iterator = col.iterator();             
            }
        }
    }
    
    class Book{
        private String name;
        private String author;
        private double price;
    
        public Book(String name, String author, double price) {
            this.name = name;
            this.author = author;
            this.price = price;
        }
    
        @Override
        public String toString() {
            return "Book{" +
                    "name='" + name + '\'' +
                    ", author='" + author + '\'' +
                    ", price=" + price +
                    '}';
        }
    }
    
    • 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

    > Collection接口遍历元素:增强 for 循环

    增强for循环,可以代替 iterator迭代器,特点:增强for循环就是简化版的iterator,本质一样,只能用于遍历集合或数组;

    基本语法:

    for(元素类型 元素名 : 集合名或数组名){
    		访问元素
    }
    
    • 1
    • 2
    • 3
    import java.util.ArrayList;
    import java.util.Collection;
    
    public class CollectionIterator {
        public static void main(String[] args) {
            Collection col = new ArrayList();
    
            col.add(new Book("三国演义","罗贯中",10.1));
            col.add(new Book("红楼梦","曹雪芹",34.6));
            col.add(new Book("西游记","吴承恩",28.8));
    
            //增强for循环  不仅可以用于集合,数组也同样适用
            //底层仍然是迭代器iterator 相当于简化版迭代器
            //快捷键 输入I后回车
            for (Object book:col) {
                System.out.println(book);
            }
            //Book{name='三国演义', author='罗贯中', price=10.1}
            //Book{name='红楼梦', author='曹雪芹', price=34.6}
            //Book{name='西游记', author='吴承恩', price=28.8}
    
        }
    }
    
    class Book{
        private String name;
        private String author;
        private double price;
    
        public Book(String name, String author, double price) {
            this.name = name;
            this.author = author;
            this.price = price;
        }
    
        @Override
        public String toString() {
            return "Book{" +
                    "name='" + name + '\'' +
                    ", author='" + author + '\'' +
                    ", price=" + price +
                    '}';
        }
    }
    
    • 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
  • 相关阅读:
    论坛介绍|COSCon'23 Web应用开发(W)
    HTML定位相关
    word怎么公式求平均值
    创建Vue项目流程
    音频应用编程
    DC电源模块检测故障步骤有哪些
    嵌入式分享合集92
    CSS的元素显示模式和CSS的背景
    Qt_C++读取RFID卡号支持Windows统信麒麟国产Linux系统
    Go :WaitGroup简介与实践
  • 原文地址:https://blog.csdn.net/Lov1_BYS/article/details/128074319