Java 详解Collection集合之ArrayList和HashSet

作者:桃花键神 时间:2021-09-10 06:27:02 

Java 详解Collection集合之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);
   }
}

Java 详解Collection集合之ArrayList和HashSet

清空集合数据:

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);
   }
}

Java 详解Collection集合之ArrayList和HashSet

修改指定索引位置的对象

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);
   }
}

Java 详解Collection集合之ArrayList和HashSet

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);
   }
}

Java 详解Collection集合之ArrayList和HashSet

清空集合数据:

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);
   }
}

Java 详解Collection集合之ArrayList和HashSet

删除指定元素


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);
   }
}

Java 详解Collection集合之ArrayList和HashSet

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

标签:Java,Collection,ArrayList,HashSet
0
投稿

猜你喜欢

  • Maven安装与配置及Idea配置Maven的全过程

    2023-05-20 01:37:59
  • Java集合教程之Collection实例详解

    2022-12-01 23:45:13
  • java 引用传递的三种类型小结

    2023-09-03 03:59:47
  • Spring boot2+jpa+thymeleaf实现增删改查

    2021-06-02 07:21:49
  • 一起来学习Java IO的转化流

    2023-11-26 20:38:30
  • C#异步编程之async/await详解

    2022-10-08 02:50:07
  • Java实现单向链表的基本功能详解

    2022-12-18 10:57:02
  • android同时控制EditText输入字符个数和禁止特殊字符输入的方法

    2021-08-01 14:16:46
  • Eclipse项目有红感叹号的解决方法

    2023-02-13 10:54:15
  • 详解Java实现简单SPI流程

    2022-12-11 16:02:23
  • Android 之BottomsheetDialogFragment仿抖音评论底部弹出对话框效果(实例代码)

    2023-08-06 01:01:56
  • Maven中怎么手动添加jar包到本地仓库详解(repository)

    2023-09-08 07:33:20
  • 用Java实现简单计算器功能

    2023-03-29 17:44:16
  • java中常见的死锁以及解决方法代码

    2023-04-07 19:47:30
  • C#读写txt文件多种方法实例代码

    2023-08-28 01:20:01
  • Android系统优化Ninja加快编译

    2022-06-30 19:43:14
  • Maven入门之使用Nexus搭建Maven私服及上传下载jar包

    2022-05-06 20:47:43
  • android downsample降低音频采样频率代码

    2021-11-19 15:32:59
  • .NET/C#实现识别用户访问设备的方法

    2021-12-20 06:30:58
  • Java数据结构与算法之循环队列的实现

    2023-11-02 11:51:29
  • asp之家 软件编程 m.aspxhome.com