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