Java 详解Collection集合之ArrayList和HashSet

目录
  • 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类型。

到此这篇关于Java 详解Collection集合之ArrayList和HashSet的文章就介绍到这了,更多相关Java Collection集合内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java中Collection集合的常用方法详解

    目录 1.boolean add(E e) 2.boolean addAll(Collection<? extends E> c) 3.void clear() 4.boolean contains(Object o) 5.boolean containsAll(Collection<?> c) 6.boolean equals(Object o) 7.int hashCode() 8.boolean isEmpty() 9.Iterator<E> iterator()

  • java使用CollectionUtils工具类判断集合是否为空方式

    目录 使用CollectionUtils工具类判断集合是否为空 判断集合为空(List为null或size()==0) 判断集合不为空(List不为null且size()!=0) 判断集合是否为空底层 集合判断是否为空工具类(CollectionUtils) 工具类 方法 使用CollectionUtils工具类判断集合是否为空 判断集合为空(List为null或size()==0) 1.CollectionUtils.isEmpty(null): true 2.例:List<String>

  • Java的Collection集合的常用方法详解

    目录 1.boolean add(Ee) 2.boolean addAll(Collection<? extends E>c) 3.void clear() 4.boolean contains(Objecto) 5.boolean containsAll(Collection<?>c) 6.boolean equals(Objecto) 7.int hashCode() 8.boolean isEmpty() 9.Iterator<E> iterator() 10.b

  • Java集合的Collection接口和List接口详解

    目录 1集合的概念 2集合的父类Collection接口 2.1常用方法 2.2遍历 3List接口 3.1List接口常用方法 3.2遍历 4集合中元素的去重 总结 1集合的概念 把集合看做是一个容器,集合不是一个类,是一套集合框架,框架体系包含很多的集合类,java api提供了 集合存储任意类型(基本包装类型,引用类型) 集合对元素的增删查改操作起来非常方便的,专门提供很多方便操作的方法 开发中经常集合来操作数据的,开发地位比较高的,考虑对数据的操作效率上的问题 2 集合的父类Collec

  • java集合Collection实现类解析ArrayList LinkedList及Vector

    目录 前言 java集合Collection List实现类 Set实现类 代码实例 前言 平时开发经常会用到List等集合操作,在这里做一个小结 java集合Collection java里面集合分为两大类:List和Set,下面是类图信息 List实现类 List的实现类ArrayList,LinkedList,Vector的特性 /** * 有序集合List接口的实现类LinkedLIst,ArrayList,Vector,Stack *(1)ArrayList是最常用的List实现类,内

  • Java Collection 接口和常用方法综合详解

    目录 1. Collection 接口实现类的特点 2. Collection 接口常用方法 3. Collection接口遍历元素方式1- 使用Iterator(迭代器) 4. Collection 接口遍历对象方式2- for 循环增强 5. 练习 1. Collection 接口实现类的特点 public interface Collection<E> extends Iterable<E> 1)Collection实现子类可以存放多个元素,每个元素可以是Object 2)有

  • Java Collection集合用法详解

    目录 1.集合的主要体系及分支 1.1Collection集合及实现类 2.List集合(List是带有索引的,所以多注意索引越界等问题) 2.1 List的实现类 3.Set集合 3.1HashSet(Set的实现类) 3.2TreeSet集合(Set的实现类) 4.集合的高频面试题 4.1Arraylist 与 LinkedList 异同 4.2ArrayList 与 Vector 区别 集合框架底层数据结构总结 1.Collection 1.集合的主要体系及分支 1.1Collection

  • java9新特性Collection集合类的增强与优化方法示例

    目录 一.提供of()方法创建集合 1.1.构建Set集合对象 1.2.构建List集合对象 1.3.构建Map对象 1.4.使用Map.ofEntries()和Map.entry() 二.Arrays 2.1.Arrays.mismatch() 2.2.Arrays.equals() 我计划在后续的一段时间内,写一系列关于java 9的文章,虽然java 9 不像Java 8或者Java 11那样的核心java版本,但是还是有很多的特性值得关注.期待您能关注我,我将把java 9 写成一系列的

  • Java 详解Collection集合之ArrayList和HashSet

    目录 Collection List ArrayList Set HashSet ArrayList和HashSet的区别 泛型 Collection Collection接口被List接口和Set接口继承 本章只介绍常用的集合 List ArrayList是List接口的实现类 ArrayList ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素. ArrayList 继承了 AbstractList ,并实现了 List 接口

  • Java 详解Collection集合之ArrayList和HashSet

    目录 Collection List ArrayList Set HashSet ArrayList和HashSet的区别 泛型 Collection Collection接口被List接口和Set接口继承 本章只介绍常用的集合 List ArrayList是List接口的实现类 ArrayList ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素. ArrayList 继承了 AbstractList ,并实现了 List 接口

  • Java 详解Map集合之HashMap和TreeMap

    目录 HashMap 创建HashMap 添加元素 访问元素 删除元素 TreeMap 创建TreeMap 添加元素 访问元素 删除元素 HashMap.TreeMap区别 Map接口储存一组成对的键-值对象,提供key(键)到value(值)的映射,Map中的key不要求有序,不允许重复.value同样不要求有序,但可以重复.最常见的Map实现类是HashMap,他的储存方式是哈希表,优点是查询指定元素效率高. Map接口被HashMap和TreeMap两个类实现. HashMap HashM

  • Java基础详解之集合框架工具Collections

    一.Collections 说明:Collcetions是集合框架中的工具,特点是方法都是静态的. 二.Collections中的常见方法 1,对list进行二分查找:前提该集合一定要有序. int binarySearch(list,key);//要求list集合中的元素都是Comparable的子类. int binarySearch(list,key,Comparator); 2,对list集合进行排序. sort(list); sort(list,comaprator); 3,对集合取最

  • Java详解entity转换到vo过程

    目录 起因 1. 将Entity转化为Vo 2. 将List<Entity>转换为List<Vo> 封装到工具类后使用 性能以及原理 ConvertUtil工具类源码 起因 使用 mybatis-plus 操作后获得的数据类型为 Entity,但是前端界面往往需要展示一些其他的字段数据,此时就需要 将 Entity 转化为 Vo. 那么他们三者的关系是什么呢?面向的使用对象不同 entity: 对应数据库表模型 vo: 对应需要返回到前端的数据模型 dto: 对应后台内部调用的数据

  • Java详解如何将excel数据转为树形

    目录 前言 拆分原始数据 1.创建实体类 2.处理数据 手动设置每棵树每个节点的id以及父id 递归封装为树结构 总结 前言 今天收到一个导入的任务,要求将excel数据保存到数据库中,不同于普通的导入,这个导入的数据是一个树形结构,如下图: 通过观察数据中的层级列我们发现表格数据由2棵树组成,分别是第3,4,5,6,7,8,9,10,11和12,13,14,15,16,17,18,它们由0作树的根节点,1为0的子节点,2为相邻1的子节点,由此得出第一颗树的结构为: 拆分原始数据 1.创建实体类

  • Java 详解循环屏障CyclicBarrier如何实现多线程分段等待执行完成

    前言 工作中是否有这样的场景,多个线程任务,如果所有线程完成到某个阶段,你希望知道所有线程均完成该阶段.当然你使用线程计数可以实现,只是不够优雅. 所以我即:Java 多线程等待优雅的实现方式之Phaser同步屏障 之后再提供一个循环屏障,CyclicBarrier,更优雅的实现工具. Maven依赖 可以依赖,也可以不依赖,只是代码要稍微多一些,最好添加. <dependency> <groupId>org.projectlombok</groupId> <ar

  • 详解c#中Array,ArrayList与List<T>的区别、共性与相互转换

    目录 Array,ArrayList and List<T> Array 一维数组 定义 初始化赋值 多维数组 定义 初始化赋值 元素赋值和获取元素 交错数组 定义 初始化赋值 获取元素和单个赋值 方法和属性 改 查 获取长度 Array.ConvertAll() 数据类型转换 切片 获取单个元素和赋值 Array.ForEach 循环 ArrayList 定义 初始化赋值 循环 方法和属性 List<T> 定义 初始化 循环 方法和属性 属性 长度 属性 取值 增 查 删 改 切

  • Java 详解如何从尾到头打印链表

    目录 1.题目 2.解法 2.1栈 2.2递归 3.复杂度 3.1栈 3.2递归 1.题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 题目来源:力扣(LeetCode) 2.解法 2.1栈 栈的特点是先进后出,所以我们创建一个栈,逐个将节点压入栈内,然后建立一个数组,将栈内的节点数值逐个弹出 class Solution { public int[] reversePrint(ListNode head) { Stack<ListNode> stack = new

  • Java 详解包装类Integer与int有哪些共通和不同

    目录 1.包装类型是什么? 2.基本类型和包装类型有什么区别? 3.解释一下自动装箱和自动拆箱? 4.int 和 Integer 有什么区别? 5.两个new生成的Integer变量的对比 6.Integer变量和int变量的对比 7.非new生成的Integer变量和new Integer()生成变量的对比 8.两个非new生成的Integer对象的对比 1.包装类型是什么? Java 为每一个基本数据类型都引入了对应的包装类型,int 的包装类就是 Integer,从 Java 5 开始引入

随机推荐