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

Collection接口和常用方法

Collection接口实现类的特点:

public interface Collection<E> extends Iterable<E>
  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=[]
    }
}

> 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());
}

每 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 +
                '}';
    }
}

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

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

基本语法:

for(元素类型 元素名 : 集合名或数组名){
    
    
		访问元素
}
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 +
                '}';
    }
}

猜你喜欢

转载自blog.csdn.net/Lov1_BYS/article/details/128074319