首页 > 编程语言 >JAVA 集合

JAVA 集合

时间:2023-08-26 16:25:54浏览次数:53  
标签:返回 JAVA arraylist 元素 接口 集合 public

Java集合体系

Java集合框架图

Java集合主要分为两大类:

实现了Collection接口的单列集合:

实现了Map接口的双列集合:

集合框架体系

序号 接口描述
1 Collection 接口

Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)。
Collection 接口存储一组不唯一,无序的对象。
2 List 接口

List接口是一个有序的 Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,第一个元素的索引为 0,而且允许有相同的元素。
List 接口存储一组不唯一,有序(插入顺序)的对象。
3 Set

Set 具有与 Collection 完全一样的接口,只是行为上不同,Set 不保存重复的元素。
Set 接口存储一组唯一,无序的对象。
4 SortedSet

继承于Set保存有序的集合。
5 Map

Map 接口存储一组键值对象,提供key(键)到value(值)的映射。
6 Map.Entry

描述在一个Map中的一个元素(键/值对)。是一个 Map 的内部接口。
7 SortedMap

继承于 Map,使 Key 保持在升序排列。

ArrayList

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

import java.util.ArrayList; // 引入 ArrayList 类

ArrayList<E> objectName =new ArrayList<>();  // 初始化

:ArrayList只能存储对象,所以基本数据类型必须要存储对应的包装类。

ArrayList常用方法

详见ArrayList常用方法

方法 描述
add() 将元素插入到指定位置的 arraylist 中
addAll() 添加集合中的所有元素到 arraylist 中
clear() 删除 arraylist 中的所有元素
clone() 复制一份 arraylist
contains() 判断元素是否在 arraylist
get() 通过索引值获取 arraylist 中的元素
indexOf() 返回 arraylist 中元素的索引值
removeAll() 删除存在于指定集合中的 arraylist 里的所有元素
remove() 删除 arraylist 里的单个元素
size() 返回 arraylist 里元素数量
isEmpty() 判断 arraylist 是否为空
subList() 截取部分 arraylist 的元素
set() 替换 arraylist 中指定索引的元素
sort() 对 arraylist 元素进行排序
toArray() 将 arraylist 转换为数组
toString() 将 arraylist 转换为字符串
ensureCapacity() 设置指定容量大小的 arraylist
lastIndexOf() 返回指定元素在 arraylist 中最后一次出现的位置
retainAll() 保留 arraylist 中在指定集合中也存在的那些元素
containsAll() 查看 arraylist 是否包含指定集合中的所有元素
trimToSize() 将 arraylist 中的容量调整为数组中的元素个数
removeRange() 删除 arraylist 中指定索引之间存在的元素
replaceAll() 将给定的操作内容替换掉数组中每一个元素
removeIf() 删除所有满足特定条件的 arraylist 元素
forEach() 遍历 arraylist 中每一个元素并执行特定操作

ArrayList排序

Collections.sort(arrayList);

LinkedList

Java LinkedList(链表) 类似于 ArrayList,是一种常用的数据容器。
与 ArrayList 相比,LinkedList 的增加和删除的操作效率更高,而查找和修改的操作效率较低。

// 引入 LinkedList 类
import java.util.LinkedList; 

LinkedList<E> list = new LinkedList<E>();   // 普通创建方法
或者
LinkedList<E> list = new LinkedList(Collection<? extends E> c); // 使用集合创建链表

LinkedList常用方法

详见LinkedList常用方法

方法 描述
public boolean add(E e) 链表末尾添加元素,返回是否成功,成功为 true,失败为 false。
public void add(int index, E element) 向指定位置插入元素。
public boolean addAll(Collection c) 将一个集合的所有元素添加到链表后面,返回是否成功,成功为 true,失败为 false。
public boolean addAll(int index, Collection c) 将一个集合的所有元素添加到链表的指定位置后面,返回是否成功,成功为 true,失败为 false。
public void addFirst(E e) 元素添加到头部。
public void addLast(E e) 元素添加到尾部。
public boolean offer(E e) 向链表末尾添加元素,返回是否成功,成功为 true,失败为 false。
public boolean offerFirst(E e) 头部插入元素,返回是否成功,成功为 true,失败为 false。
public boolean offerLast(E e) 尾部插入元素,返回是否成功,成功为 true,失败为 false。
public void clear() 清空链表。
public E removeFirst() 删除并返回第一个元素。
public E removeLast() 删除并返回最后一个元素。
public boolean remove(Object o) 删除某一元素,返回是否成功,成功为 true,失败为 false。
public E remove(int index) 删除指定位置的元素。
public E poll() 删除并返回第一个元素。
public E remove() 删除并返回第一个元素。
public boolean contains(Object o) 判断是否含有某一元素。
public E get(int index) 返回指定位置的元素。
public E getFirst() 返回第一个元素。
public E getLast() 返回最后一个元素。
public int indexOf(Object o) 查找指定元素从前往后第一次出现的索引。
public int lastIndexOf(Object o) 查找指定元素最后一次出现的索引。
public E peek() 返回第一个元素。
public E element() 返回第一个元素。
public E peekFirst() 返回头部元素。
public E peekLast() 返回尾部元素。
public E set(int index, E element) 设置指定位置的元素。
public Object clone() 克隆该列表。
public Iterator descendingIterator() 返回倒序迭代器。
public int size() 返回链表元素个数。
public ListIterator listIterator(int index) 返回从指定位置开始到末尾的迭代器。
public Object[] toArray() 返回一个由链表元素组成的数组。
public T[] toArray(T[] a) 返回一个由链表元素转换类型而成的数组。

HashSet

HashSet 基于 HashMap 来实现的(?),是一个不允许有重复元素的集合。

HashSet 允许有一个 null 值。

HashSet 是无序的,即不会记录插入的顺序。

HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。

HashSet 实现了 Set 接口。

HashSet常用方法

HashMap

HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。

HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。

HashMap 是无序的,即不会记录插入的顺序。

HashMap 继承于AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口。

HashMap<Integer, String> Sites = new HashMap<Integer, String>();

HashMap常用方法

Iterator

Java迭代器(Iterator)是 Java 集合框架中的一种机制,是一种用于遍历集合(如列表、集合和映射等)的接口。

它提供了一种统一的方式来访问集合中的元素,而不需要了解底层集合的具体实现细节。

Java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合。

Iterator 是 Java 迭代器最简单的实现,ListIterator 是 Collection API 中的接口, 它扩展了 Iterator 接口。

Iterator接口要求实现它的类必须实现iterator函数,返回一个实现了Iterator接口的迭代器。在iterator函数的具体实现中,是通过创建一个匿名内部类,该类实现了 Iterator 接口的 hasNext() 和 next() 方法,并返回这个匿名内部类的实例作为迭代器。

迭代器接口定义了几个方法,最常用的是以下三个:

  • next() - 返回迭代器的下一个元素,并将迭代器的指针移到下一个位置。

  • hasNext() - 用于判断集合中是否还有下一个元素可以访问。

  • remove() - 从集合中删除迭代器最后访问的元素(可选操作)。

标签:返回,JAVA,arraylist,元素,接口,集合,public
From: https://www.cnblogs.com/shimmer-ghq/p/17658953.html

相关文章

  • Java日志框架的依赖设置备查(SLF4J, Log4j, Logback)
    前言最近在看代码的过程中,发现身边的许多人在使用Java日志框架时,对于应该引入何种依赖不甚了解,搜索网络上的文章,常常也是互不一致。这篇文章可以看着是Java日志框架的入门使用和实践建议,重点介绍不同组合方式下的依赖设置及其背后的逻辑,一方面给自己备查,另外也希望对小伙伴们......
  • 一口气看完java并发编程
    JUC进程与线程进程程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理IO的当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程......
  • Java8 新特性全面介绍,强烈建议收藏
    阅读大约10分钟,实用性非常高,建议收藏PC阅读移步文末前言Java8已经公布有一段时间了,种种迹象表明Java8是一个有重大改变的发行版。在JavaCodeGeeks上已经有很多介绍Java8新特性的文章,例如PlayingwithJava8–LambdasandConcurrency、Java8DateTimeAPITu......
  • Java RMI实现RPC(远程过程调用)
    RMI(RemoteMethodInvocation,远程方法调用)是一个JavaRPC的API,用于一台主机传递参数并远程调用另一台主机上的方法,下面给出一个简单实例。环境:win10宿主机作为rmiclient,ubuntu虚拟机(IP为192.168.129.49)作为rmiserver。现在client希望向server传递参数,调用server端的服务并获取......
  • LeetCode-26. 删除有序数组中的重复项(Java)
    这是我在51CTO博客开启的写作之路,第一次正式写博客记录我在LeetCode的刷题日,希望能帮助更多的小伙伴攻面自己心仪的公司offer。如下对于 LeetCode-26. 删除有序数组中的重复项,进行全面解析并小结解题思路,同学们请参考:1.题目描述给你一个 升序排列 的数组 nums ,请你 原地 删......
  • java最容易犯错的8道面试题
    1.static和final的用法static的作用从三个方面来谈,分别是静态变量、静态方法、静态类。静态变量:声明为static的静态变量实质上就是全局变量,当声明一个对象时,并不产生static变量的拷贝,而是该类所有实例变量共用同一个static变量。也就是说这个静态变量只加载一次,只分配一......
  • java最容易犯错的8道面试题
    1.static和final的用法static的作用从三个方面来谈,分别是静态变量、静态方法、静态类。静态变量:声明为static的静态变量实质上就是全局变量,当声明一个对象时,并不产生static变量的拷贝,而是该类所有实例变量共用同一个static变量。也就是说这个静态变量只加载一次,只分配......
  • java高频面试题(反射、对象拷贝)
    java高频面试题(反射、对象拷贝)什么是反射?反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力Java反射:在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法Java反射机制主要提供了以下功能:在运行时判断任意一个......
  • java-文件复制练习
    packagecom.example.ss_0203_array.test.test_0826;importjava.io.*;publicclasstest2{publicstaticvoidmain(String[]args)throwsIOException{Filesrc=newFile("F:\\阿里云盘下载\\B站黑马java基础\\day10_字符串\\代码\\mystring");......
  • Java中static关键字
    叙述:static关键字是很多朋友在编写和阅读代码时比较难理解的一个关键字,但也是面试尤其笔试的考点。下面就从static关键字的用途常见面试题两个方面来描述以下我对static关键字的理解原文链接:http://www.cnblogs.com/dolphin0520/p/3799052.html一.static关键字用途在《......