Java中Collection、List、Set、Map之间的关系总结

作者:劲火星空 时间:2022-11-18 21:41:42 

初学java,单个的接触有点迷糊,所以总结下他们的关系

一、关系

Collection

--List:以特定顺序存储

--ArrayList、LinkList、Vector

--Set:不能包含重复的元素

--HashSet、TreeSet

Map

--HashMap、HashTable、TreeMap

二、分别讲解

Collection:Collection是一个父接口,List和Set是继承自他的子接口,Collection是最基本的集合接口,Java SDK中不提供直接继承自Collection的类,而是提供继承自他子接口的类,如List何Set。所用的Collection类都支持一个Iterator()方法来遍历。

List:List接口是有序的,会精确的将元素插入到指定的位置,和下面的Set接口不同,List接口允许有相同元素

ArrayList:实现可变大小的数组,允许所有的元素,不是同步的,也就是没有同步方法

LinkList:允许null元素,通常在首部或者尾部操作,所以常被使用做堆栈(stack)、队列(queue)和双向队列(deque)

Vector:类似于ArrayList,但Vector是同步的,Stack继承自Vector

Set:是一种不包含重复元素的Collection接口

HashSet:不能有重复元素,底层是使用HashMap来实现的

Map:此接口实现的Key到Value的映射,一个Map中不能包含相同的Key,每个Key只能映射一个Value

HashTable:实现了一个Key-Value的哈希表,每一个非null元素都可作为Key或者Value,HashTable是同步的

HashMap:和HashTable的不同之处是,非同步的,且允许null元素的存在

三、Array和Arrays   Collection和Collections

Array:是所以随机访问一串对象中,最有效率的一种,但是元素类型必须相同,且容量固定无法改变。

Arrays:此静态类专门操作array,提供搜索、排序、复制等静态方法

Collection:Java.util下的一个接口,是各种集合结构的父接口

Collections:Java.util下的一个专用静态类,他包含各种集合操作的静态方法,包括对集合的搜索、排序、线程安全等操作。

四、总结

涉及到堆栈、队列等操作,使用List接口,快速插入和删除应使用LinkList,随机访问元素使用ArrayList

单线程使用非同步类,多线程使用同步类

注意对HashTable的操作,作为Key的对象要覆写equals和hashCode方法

在各种Map中HashMap用于快速查找

最长使用的是ArrayList、HashSet、HashMap、Array

下面是一个找出元素字符串数组中最长字符串的例子


package Collection;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class MasString {
public static void main(String args []){
String str[] = new String[]{"zhans", "lis", "wangwt", "quliu"};
List<String> list = Arrays.asList(str);
String max = Collections.max(list, new strSort()); // Collections静态函数的使用
System.out.println("max: "+max);
}
}
class strSort implements Comparator<String>{
<span style="white-space:pre"> </span>// 一个比较器重新定义
public int compare(String s1, String s2){
if(s1.length() < s2.length()){
 return -1;
}
if(s1.length() < s2.length()){
 return s1.compareTo(s2);
}
else return 1;
}
}

来源:https://blog.csdn.net/jinhuoxingkong/article/details/51225641

标签:java,collection,list,set,map
0
投稿

猜你喜欢

  • Spring七大事务传递机制深入分析实现原理

    2022-12-21 16:28:37
  • Springboot Vue实现单点登陆功能示例详解

    2023-11-05 00:29:11
  • hibernate 命名查询如何实现

    2023-11-04 02:35:41
  • android6.0权限动态申请框架permissiondispatcher的方法

    2023-07-31 10:51:57
  • java实现在原有日期时间上加几个月或几天

    2023-08-06 16:39:48
  • 如何在Spring中自定义scope的方法示例

    2022-12-23 02:17:41
  • Java版AI五子棋游戏

    2023-07-11 07:33:24
  • Socket通信原理和实践

    2022-07-05 02:42:31
  • java学习笔记之DBUtils工具包详解

    2023-07-27 00:25:44
  • 详解java构建者模式Builder

    2021-11-16 18:49:32
  • java 排序算法之快速排序

    2022-07-23 17:39:03
  • Android悬浮窗屏蔽悬浮窗外部所有的点击事件的实例代码

    2022-11-13 17:09:47
  • java构造函数示例(构造方法)

    2022-05-08 19:06:03
  • IO中flush()函数的使用代码示例

    2023-11-27 03:49:00
  • C#以太网Sockets服务器设计实现

    2023-10-10 04:38:32
  • C#序列化成XML注意细节

    2023-04-20 01:07:00
  • C语言中数据是如何存储在内存中的

    2021-07-03 02:13:34
  • Android SDK命令行工具Monkey参数及使用解析

    2023-07-13 17:00:33
  • C# 对Outlook2010进行二次开发的图文教程

    2022-02-03 00:34:34
  • C#文件上传的简单实现

    2021-06-02 19:06:04
  • asp之家 软件编程 m.aspxhome.com