【JAVA百炼成仙】渡劫篇 上——Collection集合(List、Set)

212 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第9天,点击查看活动详情

🔎这里是JAVA成仙路,关注我学习JAVA不迷路 👍如果对你有帮助,给博主一个免费的点赞以示鼓励 欢迎各位🔎点赞👍评论收藏⭐️

前言:本章具体介绍了ArrayList和HashSet两种集合的基本使用方法和区别,图解穿插代码实现。
JAVA成仙路从基础开始讲,后续会讲到JAVA高级,中间会穿插面试题和项目实战,希望能给大家带来帮助!
@[TOC] 在这里插入图片描述

img

Collection

Collection接口被List接口和Set接口继承 本章只介绍常用的集合

List

ArrayList是List接口的实现类

ArrayList

ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。 ArrayList 继承了 AbstractList ,并实现了 List 接口。

创建ArrayList对象:

public class List {
    public static void main(String[] args) {
        var list = new ArrayList();
    }
}

向集合中添加数据:

add()

public class List {
    public static void main(String[] args) {
        var list = new ArrayList();
        list.add("a");
        list.add(1);
        list.add(1);
        System.out.println(list);
    }
}

在这里插入图片描述 清空集合数据:

clear()

public class List {
    public static void main(String[] args) {
        var list = new ArrayList();
        list.add("a");
        list.add(1);
        list.add(1);
        System.out.println(list);
        list.clear();
        System.out.println(list);
    }
}

在这里插入图片描述

修改指定索引位置的对象

set()

public class List {
    public static void main(String[] args) {
        var list = new ArrayList();
        list.add("a");
        list.add(1);
        list.add(1);
        System.out.println(list);
        list.set(2, "a");
        System.out.println(list);
    }
}

在这里插入图片描述

Set

HashSet

HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。 HashSet 允许有 null 值。 HashSet 是无序的,即不会记录插入的顺序。 HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。 HashSet 实现了 Set 接口。

创建ArrayList对象:

public class Set {
    public static void main(String[] args) {
        var set = new HashSet<>();
      
    }
}

向集合中添加数据:

add() 集合中的元素不能重复

public class Set {
    public static void main(String[] args) {
        var set = new HashSet<>();
        set.add(1);
        set.add("a");
        set.add("a");
        System.out.println(set);
    }
}

在这里插入图片描述 清空集合数据:

clear()

public class Set {
    public static void main(String[] args) {
        var set = new HashSet<>();
        set.add(1);
        set.add("a");
        set.add("a");
        System.out.println(set);
        set.clear();
        System.out.println(set);
    }
}

在这里插入图片描述 删除指定元素

public class Set {
    public static void main(String[] args) {
        var set = new HashSet<>();
        set.add(1);
        set.add("a");
        set.add("a");
        System.out.println(set);
        set.remove("a");
        System.out.println(set);
    }
}

在这里插入图片描述

ArrayList和HashSet的区别

1.HashSet 是不重复的 而且是无序的! 唯一性保证. 重复对象equals方法返回为true ,重复对象hashCode方法返回相同的整数 HashSet其实就是一个HashMap,只是你只能通过Set接口操作这个HashMap的key部分, 2.ArrayList是可重复的 有序的 特点:查询效率高,增删效率低 轻量级 线程不安全。 arraylist:在数据的插入和删除方面速度不佳,但是在随意提取方面较快

泛型

泛型程序设计(generic programming)是程序设计语言的一种风格或范式。泛型允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样。

一般用集合的时候都会用到泛型,泛型就是给集合加一个类型约束。 它可以是String、可以是Object 泛型不支持基本类型int,请使用包装器类型 Integer

创建泛型:

List<String> list = new ArrayList<>();

这样这个集合里面只能加String类型。

下一章介绍Map集合