信息发布→ 登录 注册 退出

Java 详解Collection集合之ArrayList和HashSet

发布时间:2026-01-11

点击量:
目录
  • Collection
    • List
      • ArrayList
    • Set
      • HashSet
  • ArrayList和HashSet的区别
    • 泛型

    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类型。

    在线客服
    服务热线

    服务热线

    4008888355

    微信咨询
    二维码
    返回顶部
    ×二维码

    截屏,微信识别二维码

    打开微信

    微信号已复制,请打开微信添加咨询详情!