27 java集合之collection接口、子接口及实现类

简介: 集合概念:像数组一样是java的一个容器;和数组不同的是数组只能存同类型的数据,且长度定义之后就不可变,集合不仅可以存多种类型的数据,而且还提供了增、删、改、查的方法;

6.png

概要

💡 集合概念:像数组一样是java的一个容器;和数组不同的是数组只能存同类型的数据,且长度定义之后就不可变,集合不仅可以存多种类型的数据,而且还提供了增、删、改、查的方法;

💡集合分类:可以分为单列集合与双列集合,单列集合指在集合中放单个元素,双列集合指集合中的元素是以键值对的方式存放的。

🏔️在Collection接口的两个重要子接口Set与List接口,实现的子类都是单列集合,通过观察Collection接口源码,可以看出它继承了Iterable接口;

7.png


1 🚩Collection接口的实现子类特性


(1)Collection接口的实现子类可以存放多元素,每个元素可以是Object

(2)Collection接口的实现子类,List存放有序,Set存放无序;

(3)Collection接口没有直接子类,都是通过List与Set子接实现的


2 🚩通过实现子类ArrayList体现Collection接口方法;


Collection中常用方法如下:

方法名 说明

add 添加方法

remove 删除方法

contains 查找元素是否存在

size 获取元素个数

isEmpty 判断是否为空

clear 清空集合

addAll 添加多个元素

containsAll 查找多个元素是否都存在

removeAll 删除多个元素


2.1 🌰代码演示示例:


//通过注解抑制编译警告
@SuppressWarnings({"all"})
public class CollectionMethodDemo {
    public static void main(String[] args) {
//        创建对象
        List arrList = new ArrayList();
//        使用add添加元素
        arrList.add("name");
        arrList.add(15);
    }
}


3 🚩集合的遍历:①使用Iterator(迭代器)②增强for循环遍历


1)、Iterator对象称为迭代器,主要用于遍历Collection集合中的元素,

2)、所有实现了Collection接口的类都有一个iterator()方法,用于返回实现了Iterator接口的对象,可以返回一个迭代器

3)、Iterator仅用于遍历集合,不存放对象;


3.1 🌰代码示例


public class ArrayListTest {
    public static void main(String[] args) {
    Books book1 = new Books("三国演义",50);
    Books book2 = new Books("红楼梦",60);
    Books book3 = new Books("西游记",70);
    Books book4 = new Books("水浒传",80);
//    创建集合
        List list = new ArrayList<>();
//        添加元素
        list.add(book1);
        list.add(book2);
        list.add(book3);
        list.add(book4);
//        迭代器遍历集合
        Iterator iterator  = list.iterator();
        while (iterator.hasNext()){
            Object object = iterator.next();
            System.out.println(object);
        }
        System.out.println("======================");
//        增强for遍历
        for (Object b:list){
            System.out.println(b);
        }
    }
}
class Books{
    private String name;
    private int price;
    public Books() {
    }
    public Books(String name, int price) {
        this.name = name;
        this.price = price;
    }
    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }
    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }
    /**
     * 获取
     * @return price
     */
    public int getPrice() {
        return price;
    }
    /**
     * 设置
     * @param price
     */
    public void setPrice(int price) {
        this.price = price;
    }
    public String toString() {
        return "Books{name = " + name + ", price = " + price + "}";
    }
}


4 🚩List相关解读


实现了List接口的子类都,都是有序的且允许重复;

存入数据与取出的数据顺序保持一致,支持索引取(索引从0开始);


5 🚩Set接口分析


1)Set接口创建集合是无序的,没有索引,

2)不许出现重复元素,最多包含一个null

3)常见的Set接口实现类有,HashSet、TreeSet

Map接口及实现子类


🏔️Map子类实现的都是双列集合


map接口实现类的特点(JDK 8)

(1)保存具有映射关系的数据;双列元素key----value

(2)Map中的key和value可以是任意的引用类型数据,会封装到HashMap$Node对象

(3)Map中的key不允许重复,value可以重复;

(4)Map中的key和value都可以为空,但可以只能有一个null,

(5)在Map中常用String类型作为key使用

(6)key与value存在一一对应的关系

5.png

目录
相关文章
|
12天前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
66 4
|
16天前
|
IDE JavaScript Java
在Java 11中,如何处理被弃用的类或接口?
在Java 11中,如何处理被弃用的类或接口?
109 5
|
20天前
|
Java Go 开发工具
【Java】(9)抽象类、接口、内部的运用与作用分析,枚举类型的使用
抽象类必须使用abstract修饰符来修饰,抽象方法也必须使用abstract修饰符来修饰,抽象方法不能有方法体。抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器创建抽象类的实例。抽象类可以包含成员变量、方法(普通方法和抽象方法都可以)、构造器、初始化块、内部类(接 口、枚举)5种成分。抽象类的构造器不能用于创建实例,主要是用于被其子类调用。抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类abstract static不能同时修饰一个方法。
161 0
|
20天前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
85 1
|
20天前
|
Java Go 开发工具
【Java】(8)正则表达式的使用与常用类分享
正则表达式定义了字符串的模式。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
144 1
|
20天前
|
存储 Java 程序员
【Java】(6)全方面带你了解Java里的日期与时间内容,介绍 Calendar、GregorianCalendar、Date类
java.util 包提供了 Date 类来封装当前的日期和时间。Date 类提供两个构造函数来实例化 Date 对象。第一个构造函数使用当前日期和时间来初始化对象。Date( )第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
99 1
|
Java
Java接口和抽象类
Java接口和抽象类
190 0
|
设计模式 搜索推荐 Java
java接口和抽象类的区别,以及使用选择
java接口和抽象类的区别,以及使用选择
165 0
|
设计模式 Java
【惊天揭秘】Java编程绝技大曝光:接口、抽象类、静态类与非静态类的神秘面纱终被揭开!
【8月更文挑战第22天】Java支持面向对象编程,通过接口、抽象类、静态类(如枚举与工具类)及普通类实现设计原则。接口定义行为规范,允许多重继承;抽象类含未实现的抽象方法,需子类完成;静态类常为工具类,提供静态方法;普通类则实例化对象。恰当运用这些结构能提升程序质量。
126 2
|
Java 开发者
Java中的接口和抽象类
Java中的接口和抽象类
167 3