服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|JavaScript|易语言|

服务器之家 - 编程语言 - Java教程 - Java中Collection、List、Set、Map之间的关系总结

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

2021-07-17 11:54劲火星空 Java教程

今天小编就为大家分享一篇关于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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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

延伸 · 阅读

精彩推荐