Java---Collection讲解(一)

2023-12-15 20:26:59


1. 集合体系结构

?集合体系结构如下所示。在实现时我们需要使用接口的具体实现类。

在这里插入图片描述

2. Collection集合概述和使用

?1. Collection集合概述:(1) 是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素。 (2) JDK不提供此接口的任何直接实现,它提供更具体的子接口Set和List实现。

?2. 创建Collection集合的对象:(1) 多态的方式。 (2) 具体的实现类ArrayList。

?3. Collection集合常用方法:

方法名说明
boolean add(E e)添加元素
boolean remove(Object o)从集合中移除指定元素
void clean()清空集合元素
boolean contains(Object o)判断集合中是否存在指定元素
boolean isEmpty()判断集合是否为空
int size()集合的长度,也就是集合中元素的个数
import java.util.ArrayList;
import java.util.Collection;

public class CollectionDemo {
    public static void main(String[] args) {
        Collection<String> c=new ArrayList<String >();
        c.add("hello");
        c.add("Java");
        c.add("难学");
        System.out.println(c);//[hello, Java, 难学]

        System.out.println(c.size());//3

        c.remove("hello");
        System.out.println(c);//[Java, 难学]

        System.out.println(c.contains("难学"));//true

        c.clear();
        System.out.println(c);//[]

        System.out.println(c.isEmpty());//true

    }
}

3. Collection集合的遍历

?1. Iterator:迭代器,集合的专用遍历方式。迭代器是通过集合的iterator()方法得到的,所以说它是依赖与集合而存在的。

?2.其中的常用方法:(1) E next():返回迭代中的下一个元素。(2) boolean hasNet():如果迭代具有更多元素,则返回True。

?3. 代码块举例:

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class CollectionDemo {
    public static void main(String[] args) {
        Collection<String> c=new ArrayList<String >();
        c.add("hello");
        c.add("Java");
        c.add("难学");
        Iterator<String> it=c.iterator();
        System.out.println(it.next()); //hello
        System.out.println(it.next()); //Java
        System.out.println(it.next()); //难学
        //System.out.println(it.next()); 会报错

        if(it.hasNext()){  //会判断有没有元素,没有就不执行
            System.out.println(it.next());//没有返回
        }
    }
}

4. 小案例分析

在这里插入图片描述

public class Student {
    private String name;
    private int age;
    public Student(){}
    public Student(String name,int age){
        this.name=name;
        this.age=age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Demo {
    public static void main(String[] args) {
        Collection<Student> c=new ArrayList<Student>();
        Student s1=new Student("张三",18);
        Student s2=new Student("李四",19);
        Student s3=new Student("王五",20);
        c.add(s1);
        c.add(s2);
        c.add(s3);
        Iterator<Student> it=c.iterator();
        while(it.hasNext()){
            Student s=it.next();
            System.out.println(s.getName()+" 年龄为:"+s.getAge());
            //张三 年龄为:18
            //李四 年龄为:19
            //王五 年龄为:20
        }
    }
}

5. List集合概述和特点

?1. List集合概述:(1) 有序集合(也称为序列),用户可以精确控制列表中每个元素的插入位置,用户可以通过整数索引访问元素,并搜索列表中的元素。 (2) 与Set集合不同,列表通常允许重复的元素。

?2. List集合特点:(1)有序:存储和取出的元素顺序一致。 (2) 可重复:存储的元素可以重复。

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;

public class Demo {
    public static void main(String[] args) {
        List<String> c=new ArrayList<String>();
        c.add("s1");
        c.add("s2");
        c.add("s3");
        c.add("s3");
        Iterator<String> it=c.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
            //s1
            //s2
            //s3
            //s3
        }
    }
}

6. List集合的特有方法

方法名说明
void add(int index, E element)在此集合中的指定位置插入指定的元素
E remove(int index)删除指定索引处的元素,返回被删除的元素
E set(int index, E element)修改指定索引处的元素,返回被修改的元素
E get(int index)返回指定索引处的元素
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;

public class Demo {
    public static void main(String[] args) {
        List<String> c=new ArrayList<String>();
        c.add("s1");
        c.add("s2");
        c.add("s3");
        c.add("s3");
        Iterator<String> it=c.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
            //s1
            //s2
            //s3
            //s3
        }
        c.add(1,"插入");
        System.out.println(c);//输出:[s1, 插入, s2, s3, s3]
        System.out.println(c.remove(1));//输出:插入
        System.out.println(c);//输出:[s1, s2, s3, s3]
        System.out.println(c.set(1,"s22"));//输出:s2
        System.out.println(c);//输出:[s1, s22, s3, s3]
        System.out.println(c.get(3));//输出:s3
    }
}

7. 小案例分析

在这里插入图片描述

package BliJava;

public class Student {
    private String name;
    private int age;
    public Student(){}
    public Student(String name,int age){
        this.name=name;
        this.age=age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}


import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
public class Demo {
    public static void main(String[] args) {
        List<Student> list=new ArrayList<Student>();
        Student s1=new Student("张三",18);
        Student s2=new Student("李四",19);
        Student s3=new Student("王五",20);
        list.add(s1);
        list.add(s2);
        list.add(s3);

        //第一种迭代方式
        Iterator<Student> it=list.iterator();
        while(it.hasNext()){
            Student s=it.next();
            System.out.println(s.getName()+" "+s.getAge());
        }

        //第二种迭代方式
        for(int i=0;i<list.size();i++){
            Student s=list.get(i);
            System.out.println(s.getName()+" "+s.getAge());
        }
        //张三 18
        //李四 19
        //王五 20
        //张三 18
        //李四 19
        //王五 20
    }
}

文章来源:https://blog.csdn.net/m0_62881487/article/details/134917653
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。