【Java】----容器Set/List/Map 的区别

             

【概念】


    Java容器是Java API提供的在程序中存放对象的类的实例,不同于数组的固定性,Java容器的空间具有自增性和自销性。完美解决了数组的不足。

 

【区分】


    Java中各式各样的容器有很多,每一种容器都代表着一种情况和特殊的问题。如何从中选取它们是一个难点。面对如此多的容器,程序员们把它们分成了大致三种代表类型:List/Set/Map。

 

    Java API 容器:

                                                  【Java】----容器Set/List/Map 的区别_第1张图片


     主要分类:

                                                  【Java】----容器Set/List/Map 的区别_第2张图片



    按照存储的形式不同,将一个一个值存储的容器划分为Collection 接口下,按照数组形式一组一组存储的容器划分Map 接口下。

 


分类

容器名

数据存储结构

读写速度

同、异步

特点

备注

Set

HashSet

散列

中等

 

无序、不可重复

 

List

LinkedList

链式存储

读慢写快

异步

有序、可重复

  堆栈、

队列

ArrayList

顺序存储

读快写慢

异步

Map

HashMap

二叉树

中等

异步

键值对

 

 

    List 接口是有序可重复的:Linkedlist  链表结构:链式存储,读慢,写快;Arraylist 顺序结构:顺序存储,读快,写改慢;如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList。

 

    Set 接口是无序不可重复:Set是一种不包含重复的元素的Collection,即任意的两个元素e1和e2都有e1.equals(e2)=false,Set最多有一个null元素。需要equals()方法确保对象唯一性;

 

    HashSet包括散列和集合,它的读写速度居于中间。

 

    实现Map接口的类型用于存储键值对,数据类型多为二叉树。

 

    关于同步异步的属性其实涉及到了Java容器中的同步容器的概念。既将自己的状态封装,并对每个公有方法都进行同步,使得每次只有一个线程能够访问容器的装填。如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。

 

【实用知识】


    Java容器中的Collection接口的方法中的Iterator方法返回一个Java容器的迭代器,可以对容器内的元素进行遍历操作。


    Java.lang.Comparable接口提供了比较的功能,既intcompareTo(Object obj);0、正数、负数分别表示等于、大于、小于。

你可能感兴趣的:(【Java】----容器Set/List/Map 的区别)