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


猜你喜欢
- 本文实例讲述了Android中资源文件用法。分享给大家供大家参考,具体如下:一、XML文件间资源文件的使用引用格式:attribute=&q
- 创建一个简单的项目:<?xml version="1.0" encoding="UTF-8"?
- 1. Resource Basics(1) Manifest Resources(资源清单)资源在编译期间添加到程序集。如果要将资源嵌入到程
- FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件
- 在Java项目开发中,Maven是我们最常用的依赖管理和构建工具了!我们常常通过添加dependency节点,就能够很方便地加入依赖,而不需
- PS:公司的业务中有个超级大的作业就是把OFFICE文档转成PDF,我猜之前没程序猿们,公司那些人应该是一个个手动转。强烈为猿们感叹,帮你们
- 最近经常有人问Spring Cloud Feign如何上传文件。有团队的新成员,也有其他公司的兄弟。本文简单做个总结——早期的Spring
- Java BufferWriter写文件之后文件是空的或者数据不全在编程的过程中,读写文件是非常常见的操作,在这里我问介绍一下最近我遇到的集
- 首先,类只能使用public修饰是一个伪命题,应该说我们只见到过使用public修饰的类,还有一些类没有访问修饰符,此时访问权限为defau
- 一、背景今天心血来潮,准备测试一下项目中 logback 的自动刷新功能,但是测试时发现并不生效。logback 的配置如下:<con
- 本文研究的主要是SpringMVC中使用Thymeleaf模板引擎的相关内容,具体介绍如下。Thymeleaf提供了一组Spring集成,允
- Java实现PC微信扫码支付做一个电商网站支付功能必不可少,那我们今天就来盘一盘微信支付。微信支付官方网站业务流程:开发指引文档支付服务开发
- 在了解Lambda表达式之前我们先来区分一下面向对象的思想和函数式编程思想的区别面向对象的思想:做一件事情,找一个能解决这个事情的对象,调用
- Android webview在默认情况下是不支持网页中的文件上传功能的;如果在网页中有<input type="file&
- 此篇文章是我一个小白对委托的理解和总结,请高手多多评判指教。委托就是一种后期绑定机制,说的直白点就是在调用的时候才去传递业务逻辑的一种算法。
- 问题:为什么有缓存mybatis默认开启一级缓存什么场景下必须需要关闭一级缓存场景:执行2次相同sql,但是第一次查询sql结果会加工处理,
- 本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下using System;using Microsoft
- 在实际的项目开发过中,当我们修改了某个java类文件时,需要手动重新编译、然后重新启动程序的,整个过程比较麻烦,特别是项目启动慢的时候,更是
- 零、Gallery的使用回顾我们有时候在iPhone手机上或者Windows上面看到动态的图片,可以通过鼠标或者手指触摸来移动它,产生动态的
- springboot集成mybatis关键代码如下:1,添加pom引用 <dependency> <group