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

 更新时间:2019年02月25日 11:17:15   作者:劲火星空  
今天小编就为大家分享一篇关于Java中Collection、List、Set、Map之间的关系总结,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

初学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;
 }
}

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • java实现简单网络象棋游戏

    java实现简单网络象棋游戏

    这篇文章主要为大家详细介绍了java实现简单网络象棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • JVM虚拟机性能监控与故障处理工具介绍

    JVM虚拟机性能监控与故障处理工具介绍

    这篇文章主要为大家介绍了JVM虚拟机性能监控与故障处理工具介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • SpringBoot集成PDFBox实现电子签章的代码详解

    SpringBoot集成PDFBox实现电子签章的代码详解

    Apache PDFBox 是一个开源的 Java 库,用于处理 PDF 文档,它提供了一系列强大的功能,包括创建、渲染、拆分、合并、加密、解密 PDF 文件,以及从 PDF 中提取文本和元数据等,本文给大家介绍了SpringBoot集成PDFBox实现电子签章,需要的朋友可以参考下
    2024-09-09
  • 如何实现nohup java进程号一直在变方法步骤详解

    如何实现nohup java进程号一直在变方法步骤详解

    这篇文章主要为大家介绍了如何实现nohup java进程号一直在变方法步骤详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • 详解Spring全局异常处理的三种方式

    详解Spring全局异常处理的三种方式

    这篇文章主要介绍了详解Spring全局异常处理的三种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Java异常处理机制深入理解

    Java异常处理机制深入理解

    如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器
    2022-01-01
  • java编写ftp下载工具

    java编写ftp下载工具

    本文给大家介绍的是如何一步步实现使用java编写FTP下载工具,而且是在Linux环境下使用javac编译的,在运行和编译上有些不同之处,有需要的小伙伴们参考下吧。
    2015-03-03
  • hibernate测试时遇到的几个异常及解决方法汇总

    hibernate测试时遇到的几个异常及解决方法汇总

    今天小编就为大家分享一篇关于hibernate测试时遇到的几个异常及解决方法汇总,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • SpringBoot读取配置的常用方式总结

    SpringBoot读取配置的常用方式总结

    在SpringBoot应用开发中,配置文件是不可或缺的一部分,它们帮助我们管理应用的运行时参数,使得应用的部署和维护变得更加灵活,本文将介绍六种常用的SpringBoot读取配置方式,需要的朋友跟着小编一起来看看吧
    2024-07-07
  • SpringBoot如何读取配置文件中的数据到map和list

    SpringBoot如何读取配置文件中的数据到map和list

    这篇文章主要介绍了SpringBoot如何读取配置文件中的数据到map和list,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02

最新评论