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

目录
相关文章
|
3天前
|
安全 架构师 Java
Java大厂面试高频:Collection 和 Collections 到底咋回答?
Java中的`Collection`和`Collections`是两个容易混淆的概念。`Collection`是集合框架的根接口,定义了集合的基本操作方法,如添加、删除等;而`Collections`是一个工具类,提供了操作集合的静态方法,如排序、查找、同步化等。简单来说,`Collection`关注数据结构,`Collections`则提供功能增强。通过小王的面试经历,我们可以更好地理解这两者的区别及其在实际开发中的应用。希望这篇文章能帮助你掌握这个经典面试题。
18 4
|
13天前
|
存储 安全 Java
Java 集合框架中的老炮与新秀:HashTable 和 HashMap 谁更胜一筹?
嗨,大家好,我是技术伙伴小米。今天通过讲故事的方式,详细介绍 Java 中 HashMap 和 HashTable 的区别。从版本、线程安全、null 值支持、性能及迭代器行为等方面对比,帮助你轻松应对面试中的经典问题。HashMap 更高效灵活,适合单线程或需手动处理线程安全的场景;HashTable 较古老,线程安全但性能不佳。现代项目推荐使用 ConcurrentHashMap。关注我的公众号“软件求生”,获取更多技术干货!
34 3
|
2月前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
166 57
|
20天前
|
JSON Java Apache
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。
|
30天前
|
存储 缓存 安全
Java 集合江湖:底层数据结构的大揭秘!
小米是一位热爱技术分享的程序员,本文详细解析了Java面试中常见的List、Set、Map的区别。不仅介绍了它们的基本特性和实现类,还深入探讨了各自的使用场景和面试技巧,帮助读者更好地理解和应对相关问题。
45 5
|
2月前
|
存储 缓存 安全
Java 集合框架优化:从基础到高级应用
《Java集合框架优化:从基础到高级应用》深入解析Java集合框架的核心原理与优化技巧,涵盖列表、集合、映射等常用数据结构,结合实际案例,指导开发者高效使用和优化Java集合。
50 4
|
2月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
69 8
|
2月前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
2月前
|
Java Android开发
Eclipse 创建 Java 类
Eclipse 创建 Java 类
32 0
|
7天前
|
监控 Java
java异步判断线程池所有任务是否执行完
通过上述步骤,您可以在Java中实现异步判断线程池所有任务是否执行完毕。这种方法使用了 `CompletionService`来监控任务的完成情况,并通过一个独立线程异步检查所有任务的执行状态。这种设计不仅简洁高效,还能确保在大量任务处理时程序的稳定性和可维护性。希望本文能为您的开发工作提供实用的指导和帮助。
46 17