首页 > 编程语言 >java所有集合的相互关系是什么

java所有集合的相互关系是什么

时间:2024-05-14 15:20:42浏览次数:21  
标签:Map Set java 实现 接口 相互 集合 ###

Java集合框架是一个设计精良、功能强大的工具集,用于存储和操作对象集合。它大致分为以下几类,并且各类之间存在一定的层级关系和功能差异:

### 顶级接口(根接口)
1. **Collection**: 是最基础的集合接口,所有集合类都直接或间接实现了这个接口。它定义了基本的集合操作,如添加元素(`add(E element)`)、删除元素(`remove(Object o)`)、清空集合(`clear()`)、检查集合是否为空(`isEmpty()`)等。
   
2. **Map**: 专门用于存储键值对的接口,其中每个键映射到一个值。它定义了如获取值(`get(Object key)`), 添加键值对(`put(K key, V value)`), 删除映射(`remove(Object key)`)等操作。

### Collection的子接口
1. **List**: 有序集合,允许重复元素,可以通过索引访问元素。主要实现包括`ArrayList`, `LinkedList`, `Vector`。
   
2. **Set**: 无序集合,不允许重复元素。主要实现包括`HashSet`, `LinkedHashSet`, `TreeSet`。

List和Set的区别

### Map的子接口
- **SortedMap**: 保持键的排序(自然排序或自定义比较器排序)的Map。主要实现包括`TreeMap`。
- **NavigableMap**: 扩展了`SortedMap`,提供了更强大的导航功能,如返回子图、逆向视图等。`TreeMap`也实现了这个接口。

### 特殊用途的集合接口
- **Queue**: 表示一种先进先出(FIFO)的数据结构,主要实现包括`LinkedList`, `PriorityQueue`, `ArrayBlockingQueue`等。
- **Deque**: 双端队列,可以在两端进行插入和删除操作,主要实现包括`LinkedList`, `ArrayDeque`。
  
### 集合实现类
- **ArrayList**: 动态数组实现的List,随机访问快,增删慢。
- **LinkedList**: 双向链表实现的List和Queue,增删快,随机访问慢。
- **HashSet**: 基于哈希表实现的Set,无序,性能依赖于哈希码。
- **LinkedHashSet**: 维护插入顺序的HashSet。
- **TreeSet**: 基于红黑树实现的Set,自然排序或自定义排序。
- **HashMap**: 哈希表实现的Map,无序,高性能。
- **TreeMap**: 红黑树实现的Map,键有序。
- **EnumSet/EnumMap**: 专门用于枚举类型的Set和Map,高效且空间占用小。

 

标签:Map,Set,java,实现,接口,相互,集合,###
From: https://www.cnblogs.com/2324hh/p/18191370

相关文章

  • java基础 韩顺平老师的 枚举和注解 自己记的部分笔记
    424,枚举类引出 packagecom.hspedu.enum_;publicclassEnumeration{publicstaticvoidmain(String[]args){//使用Seasonspring=newSeason("春天","温暖");Seasonsummer=newSeason("夏天","炎热&quo......
  • java split用法
    需求:java读取一个csv文件并将文件内容每行按照","隔开场景一:读取1.csv文件:文件内容如下:1,zhangsan,note2,lisi,注意:第二行逗号后面没有数据publicstaticvoidmain(String[]args){StringcsvFile="C:\\Users\\yc\\Desktop\\1.csv";Stringline;......
  • java测试-Xpath定位
     Xpath定位调式方法console方式:$x("xpath表达式")xpath基础语法1、/从该节点的子元素选取2、//从该节点的子孙元素选取$x('//*')匹配所有3、*通配符查找所有4、nodename标签名(不是属性)$x('//input')5、..当前节点的父节点$x("//*[@id='ember61'......
  • 一道需要仔细看的java面试题
    publicstaticvoidmain(String[]args){ Map<String,Object>resultMap=newHashMap<String,Object>(); Stringstr=MapUtil.getStr(resultMap,"yyyy"); System.out.println("++"+str); System.out.println(&......
  • java与AI
    为什么Java是AI领域的理想选择?机器学习已成为当今技术领域的重要组成部分,使计算机能够从数据中学习并随着时间的推移提高其性能。随着大数据的爆炸式增长和自动化需求的不断增加,机器学习已成为许多行业不可或缺的工具,包括金融、医疗保健、电子商务等。Java在支持AI应用程序......
  • redis学习笔记4: 在Java中操作Redis
    redis学习笔记4:在Java中操作RedisRedis的Java客户端Jedis[命令和原生Redis基本相同]Lettuce[性能高效]SpringDateRedis[可以在Spring项目中使用,简化操作]SpringDateRedis使用方式导入maven坐标<!--https://mvnrepository.com/artifact/org.springfra......
  • Java开发微服务SpringCloudAlibaba+Nginx+Vue+Mysql+RabbitMQ
    项目介绍随着互联网技术的飞速发展和移动设备的普及,自媒体平台已经成为人们获取信息、传播观点、实现自我价值的重要途径。自媒体平台的设计与实现,不仅需要考虑如何提供便捷的内容发布、编辑和管理功能,还需要考虑如何构建健康的内容生态,保证信息的真实性和可靠性,防止虚假信息的传......
  • ZonedDateTime 转为 java.util.Date
    publicstaticvoidmain(String[]args){//1、使用ZoneId定义美国时区ZoneIdzoneId=ZoneId.of("America/New_York");//2、获取当前时间ZonedDateTimenow=ZonedDateTime.now();//3、将当前时间转换为美国时间Z......
  • 元组、布尔、集合的内置方法
    元组的内置方法【一】元组的定义()在元组的内部,只有一个元素的时候要加逗号','【二】类型强转转换其他数据类型为元组,整数类型和布尔类型不可以强转print(tuple([1,2,3]))#(1,2,3)print(tuple('qwer'))#('q','w','e','r')print(tuple({1,2,3,3}))#(1,2,3)p......
  • java内部类
    1内部类1.1概述●内部类就是定义在一个类里面的类。内部内(寄生),外部内(宿主)1.2使用场景●内部的完整结构只为外部事务提供服务,那么内部的完整结构可以使用内部类来设计●内部类通常可以方便访问外部类的成员,包括私有成员●内部类提供了更好的封装性,可用private,protect......