首页 > 编程语言 >3.4. Java集合框架(List、Set、Map等)

3.4. Java集合框架(List、Set、Map等)

时间:2023-05-30 14:02:10浏览次数:57  
标签:Map Set Java Cherry 接口 add 集合 Banana

Java集合框架是Java提供的一套用于存储和操作数据的接口和类。它包括以下几个主要部分:

  1. 接口:集合框架定义了一系列接口,如CollectionListSetMap等。
  2. 实现类:集合框架提供了一些实现这些接口的类,如ArrayListLinkedListHashSetLinkedHashSetHashMapLinkedHashMap等。
  3. 算法:集合框架提供了一些用于操作集合的算法,如排序、搜索等。

我们将分别介绍这些接口和实现类,并给出相应的示例。

1. Collection接口

Collection接口是Java集合框架的根接口,它定义了一些用于操作集合的通用方法。Collection接口有两个主要的子接口:ListSet

以下是Collection接口的一些常用方法:

  • add(E e):添加一个元素。
  • addAll(Collection<? extends E> c):添加一个集合的所有元素。
  • remove(Object o):删除一个元素。
  • removeAll(Collection<?> c):删除一个集合的所有元素。
  • contains(Object o):判断是否包含一个元素。
  • containsAll(Collection<?> c):判断是否包含一个集合的所有元素。
  • size():返回集合的元素个数。
  • isEmpty():判断集合是否为空。
  • clear():清空集合。

2. List接口

List接口是一个有序的、可重复的集合。List接口的主要实现类有ArrayListLinkedList

以下是List接口的一些常用方法:

  • get(int index):获取指定位置的元素。
  • set(int index, E element):设置指定位置的元素。
  • add(int index, E element):在指定位置添加一个元素。
  • remove(int index):删除指定位置的元素。
  • indexOf(Object o):返回一个元素的第一个匹配位置。
  • lastIndexOf(Object o):返回一个元素的最后一个匹配位置。

3. Set接口

Set接口是一个无序的、不可重复的集合。Set接口的主要实现类有HashSetLinkedHashSet

以下是Set接口的一些常用方法(实际上与Collection接口的方法相同,因为Set接口没有添加新的方法):

  • add(E e):添加一个元素。
  • remove(Object o):删除一个元素。
  • contains(Object o):判断是否包含一个元素。
  • size():返回集合的元素个数。
  • isEmpty():判断集合是否为空。
  • clear():清空集合。

4. Map接口

Map接口是一个存储键值对的集合。Map接口的主要实现类有HashMapLinkedHashMap

以下是Map接口的一些常用方法:

  • put(K key, V value):添加一个键值对。
  • get(Object key):根据键获取值。
  • remove(Object key):根据键删除一个键值对。
  • containsKey(Object key):判断是否包含一个键。
  • containsValue(Object value):判断是否包含一个值。
  • size():返回集合的键值对个数。
  • isEmpty():判断集合是否为空。
  • clear():清空集合。

5. 示例

下面是一个使用Java集合框架的示例:

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Set;
import java.util.Map;

public class CollectionExample {
    public static void main(String[] args) {
        // List 示例
        List<String> arrayList = new ArrayList<>();
        arrayList.add("Apple");
        arrayList.add("Banana");
        arrayList.add("Cherry");
        arrayList.add("Banana");
        System.out.println("ArrayList: " + arrayList);

        List<String> linkedList = new LinkedList<>();
        linkedList.add("Apple");
        linkedList.add("Banana");
        linkedList.add("Cherry");
        linkedList.add("Banana");
        System.out.println("LinkedList: " + linkedList);

        // Set 示例
        Set<String> hashSet = new HashSet<>();
        hashSet.add("Apple");
        hashSet.add("Banana");
        hashSet.add("Cherry");
        hashSet.add("Banana");
        System.out.println("HashSet: " + hashSet);

        Set<String> linkedHashSet = new LinkedHashSet<>();
        linkedHashSet.add("Apple");
        linkedHashSet.add("Banana");
        linkedHashSet.add("Cherry");
        linkedHashSet.add("Banana");
        System.out.println("LinkedHashSet: " + linkedHashSet);

        // Map 示例
        Map<String, Integer> hashMap = new HashMap<>();
        hashMap.put("Apple", 1);
        hashMap.put("Banana", 2);
        hashMap.put("Cherry", 3);
        hashMap.put("Banana", 4);
        System.out.println("HashMap: " + hashMap);

        Map<String, Integer> linkedHashMap = new LinkedHashMap<>();
        linkedHashMap.put("Apple", 1);
        linkedHashMap.put("Banana", 2);
        linkedHashMap.put("Cherry", 3);
        linkedHashMap.put("Banana", 4);
        System.out.println("LinkedHashMap: " + linkedHashMap);
    }
}

输出结果:

ArrayList: [Apple, Banana, Cherry, Banana]
LinkedList: [Apple, Banana, Cherry, Banana]
HashSet: [Apple, Banana, Cherry]
LinkedHashSet: [Apple, Banana, Cherry]
HashMap: {Apple=1, Banana=4, Cherry=3}
LinkedHashMap: {Apple=1, Banana=4, Cherry=3}

这个示例演示了如何使用ArrayListLinkedListHashSetLinkedHashSetHashMapLinkedHashMap类。你可以看到,List接口允许添加重复元素,而Set接口不允许。此外,HashMapHashSet是无序的,而LinkedHashMapLinkedHashSet是有序的。

希望这个示例和解释能帮你更好地理解Java集合框架。如果你有任何疑问,请随时向我提问。

file

file

参考文章:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

标签:Map,Set,Java,Cherry,接口,add,集合,Banana
From: https://blog.51cto.com/u_14241752/6378485

相关文章

  • Java第五日
    1.多重循环1.代码  2.实战99乘法表 2.break1.语法结构 2.实战 3.continue语法1.语法结构2.实战  4.数组 1.数组定义数组是一个变量,存储相同数据类型的一组数据声明一个变量就是在内存空间划出一块合适的空间声明一个数组就是在内存空间划出一串......
  • Java第六日
    今日继续数组的学习 1.Arrays工具类的使用2.数据应用3.二维数组 1.Arrays工具类的使用Arrays的描述java.util.ArraysSort()升序查询实战录入五位同学的成绩,并进行升序排序然后输出结果 2.数据的应用1.求最大值已知数组存储5位学员成绩,求最大值给max先赋一个......
  • 智能社原生的力量——原生JavaScript开发高级
    智能社原生的力量——原生JavaScript开发高级download:3w51xuebccomSpringBoot3:打造高效的Java应用程序SpringBoot是一个由Pivotal团队开发的开源框架,它基于Spring框架,旨在使Spring应用程序的开发变得更加容易和快速。最新的SpringBoot版本是3.0.0,它带来了许多新特性和功能,让我......
  • Linux(Ubuntu)下设置开机自启shell脚本执行Java程序jar包
    Linux(Ubuntu)下设置开机自启shell脚本执行Java程序jar包 原创软件测试日常记录2023-01-1907:19:29博主文章分类:ubuntu©著作权文章标签ubuntujarlinuxJAVAjava文章分类运维阅读数122 经常需要在Linux服务器上设置开机启动jar包,首先编写一个启动jar包的脚本,这里以/......
  • [ABC302F]MergeSet
    AGC010BBoxes这道题其实是一道01BFS求最短路的模型,但是建模比较难想。首先需要想到对于每个集合内的点两两连边,边权为\(1\),由于开始和结束时需要从起点到中转点和中转点到终点,而我们要求的其实是中转点的数量,如果我们直接求一遍最短路(这样的话用的是普通bfs),中准点之间是an......
  • 导入BaseMapper依赖需要用到的包
    <!--mp依赖mybatisPlus会自动的维护Mybatis以及MyBatis-spring相关的依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus</artifactId><ver......
  • 为什么HashMap可以存null,而ConcurrentHashMap不可以?
    HashMap中,null可以作为键也可以做为值。而在ConcurrentHashMap中,Key和Value都不允许为null。ConcurrentMap(如ConcurrentHashMap、ConcurrentSkipListMap)不允许使用null值的主要原因是,在非并发的Map中(如HashMap),是可以容忍模糊性(二义性)的,而在并发Map中是无法容忍的。假如说,所有的......
  • java 网络通讯:tcp,upd,http
    java网络通讯:tcp,upd,http1.TCP通信服务端用的代表类:ServerSocket类,注册端口。调用accept()方法阻塞等待接收客户端连接。得到Socket对象。TCP通信的基本原理?客户端怎么发,服务端就应该怎么收。客户端如果没有消息,服务端会进入阻塞等待。Socket一方关闭或者出现异常、对方......
  • Java实现打包压缩文件或文件夹生成zip以实现多文件批量下载
    有时候在系统中需要一次性下载多个文件,但逐个下载文件比较麻烦。这时候,最好的解决办法是将所有文件打包成一个压缩文件,然后下载这个压缩文件,这样就可以一次性获取所有所需的文件了。下面是一个名为CompressUtil的工具类的代码,它提供了一些方法来处理文件压缩和下载操作:importor......
  • bash: 警告:setlocale: LC_TIME: 无法改变区域选项 (zh_CN.UTF-8)
    使用ssh远程登陆centos,出现如下告警信息:bash:警告:setlocale:LC_TIME:无法改变区域选项(zh_CN.UTF-8)原因分析:系统已经设置了默认地区_语言.字符集为zh_CN.UTF-8,但是在系统中没有定义对应的locale文件,所以只需要手动生成这个locale文件即可!解决办法:1)#vim/etc/environment......