Java 详解Collection集合之ArrayList和HashSet
作者:桃花键神 发布时间:2021-09-10 06:27:02
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类型。
来源:https://blog.csdn.net/weixin_50843918/article/details/123512054


猜你喜欢
- 之前知道spring支持JSR校验,在自己定义的bean中加入@NotNull,@NotBlank,@Length等之类的校验用于处理前台传
- 本文实例讲述了java对象转型的概念,分享给大家供大家参考。具体方法如下:对象转型(casting)注意事项如下:1、一个基类的引用类型变量
- //param objArr the expanded object of Array. &
- 项目最终的文件结构1 添加maven依赖 <dependency> <groupI
- 一、简介我们在线程编程的时候往往会涉及到线程的通信,通过信号的接受来进行线程是否阻塞的操作。AutoResetEvent 允许线程通过发信号
- 算法描述堆排序算法的描述如下:将待排序的数组调整为最大堆,此时未排序的长度 N 为数组的长度,调整的过程就是倒序将数组的
- 最近由于项目需要把不同格式的视频转换为ts流,故研究了一下ffmpeg。在网上找了很多资料,主要参考了Java+Windows+ffmpeg
- 使用System.Environment获取电脑的相关属性,入门案例,具体内容如下static void Main(string[] arg
- cmd调用phantomjs官方资料:http://phantomjs.org/quick-start.html手动执行从官方下载phant
- 完美地模仿了2048游戏,是根据网友的一个2048改的。Block.javaimport javax.swing.*;import java
- 前言假如你做了一个云盘类的app,或者可以保存用户导入的配置。用户在未来肯定需要获取这些文件,一个办法是写一个Activity,向一个文件管
- 使用简单的fragment实现左侧导航,供大家参考,具体内容如下先上效果图:MainActivity.javapublic class Ma
- 实践过程效果代码public partial class Form1 : Form{ public Form1()
- Android绘图常用方法有哪些,下面一一为大家列举:1、有关画笔(Paint)的方法Paint mPaint= new Paint();m
- 1.在res上面右键->New->Android resource directory2.点击之后,出现下图Resource t
- 最近工作遇到一个需求,需要下载excel模板,编辑后上传解析存储到数据库。因此为了更好的理解公司框架,我就自己先用spring mvc实现了
- Spark Streaming算子开发实例transform算子开发transform操作应用在DStream上时,可以用于执行任意的RDD
- 前言最近在给熔断器组件增加一个降级策略(Hystrix好像没有这个配置),我们提供了如下几种策略:1、默认策略2、返回常量值3、抛出指定异常
- 只要是开发和手机通讯录有关的应用,总要学会获取联系人信息,每次都google很麻烦,怎么办?写一个工具类,获取到通讯录里所有的信息并分好类,
- 一、strcmp函数适用对象char*类型字符串函数介绍strcmp函数是cstring库中的函数,包含在string.h头文件中用法str