好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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测试数据parator;

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测试数据pareto(s2);

  }

  else return 1 ;

  }

}

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

原文链接:https://blog.csdn.net/jinhuoxingkong/article/details/51225641

查看更多关于Java中Collection、List、Set、Map之间的关系总结的详细内容...

  阅读:17次