关于java:Java-集合四集合总结

47次阅读

共计 3270 个字符,预计需要花费 9 分钟才能阅读完成。

一、前言

<font face= 黑体 >Java 汇合系列文章如下:

  1. <font face= 黑体 >Java 汇合(一)——Collection 汇合接口、Iterator 迭代器和泛型;
  2. <font face= 黑体 >Java 汇合(二)——List、Set 汇合和 Collections 工具类;
  3. <font face= 黑体 >Java 汇合(三)——Map 汇合;

<font face= 黑体 > 这篇文章次要对 Java 中的汇合做一个简略的总结。

二、汇合(Collection)

2.1、汇合的由来

<font face= 黑体 > 咱们须要容器来存储对象,而数组长度是固定的,当增加的元素超过了数组的长度时须要对数组从新定义,太麻烦,语速 Java 就提供了汇合类,能存储任意对象,长度是能够扭转的,随着元素的减少而减少,随着元素的缩小而缩小。

2.2、汇合和数组的区别

  1. <font face= 黑体 > 内容上,数组能存储根本数据类型和援用类型,而汇合只能存储援用类型;
  2. <font face= 黑体 > 长度上,数组长度固定,汇合长度可变。
  3. <font face= 黑体 > 存储类型上,数组只能存储同一种类型的数据,而汇合能够存储不同类型的数据。

2.3、Collection 汇合的继承关系

2.4、Collection 的罕用性能

  1. <font face= 黑体 >增加性能:
    <font face= 黑体 >boolean add(Object obj):增加一个元素;
    <font face= 黑体 >boolean addAll(Collection c):增加一个汇合的元素;
  2. <font face= 黑体 >删除性能:
    <font face= 黑体 >void clear():移除所有元素;
    <font face= 黑体 >boolean remove(Object o):移除一个元素;
    <font face= 黑体 >boolean removeAll(Collection c):移除一个汇合的元素;
  3. <font face= 黑体 >判断性能:
    <font face= 黑体 >boolean contains(Object o):判断汇合中是否蕴含指定的元素;
    <font face= 黑体 >boolean containsAll(Collection c):判断汇合中是否蕴含指定的汇合元素;
    <font face= 黑体 >boolean isEmpty():判断汇合是否为空;
  4. <font face= 黑体 >长度性能:
    <font face= 黑体 >int size():获取元素的个数;
  5. <font face= 黑体 >迭代性能:
    <font face= 黑体 >Iterator<E> iterator():获取迭代器遍历汇合;
  6. <font face= 黑体 >把汇合转换为数组:
    <font face= 黑体 >Object[] toArray()

三、List 汇合

3.1、特点

<font face= 黑体 >List 是 Collection 的子接口,特点是有序(存储程序和取出程序统一),可反复,有索引,可用一般 for 循环遍历。

3.2、特有性能

<font face= 黑体 > 因为 List 有索引,所以 List 的特有性能都和索引无关,增删改查如下:

  1. <font face= 黑体 >void add(int index,Object element):在指定地位增加元素;
  2. <font face= 黑体 >Object remove(int index):依据索引删除元素, 返回被删除的元素;
  3. <font face= 黑体 >Object set(int index,Object element):依据索引批改元素,返回被润饰的元素;
  4. <font face= 黑体 >Object get(int index):获取指定地位的元素;

3.3、遍历 List 汇合的办法

  1. <font face= 黑体 > 一般 for 循环;
  2. <font face= 黑体 > 加强 for 循环;
  3. <font face= 黑体 >iterator 迭代器遍历;

3.4、List 子类的特点

  1. <font face= 黑体 >ArrayList:底层数据结构是数组,查问快,增删慢。线程不平安,效率高。
  2. <font face= 黑体 >LinkedList:底层数据结构是链表,查问慢,增删快。线程不平安,效率高。
  3. <font face= 黑体 >Vector:底层数据结构是数组,查问快,增删慢。线程平安,效率低。(已弃用)

<font face= 黑体 > 应用准则:增删多,查问少,用 LinkedList,反之,增删少,查问多,用 ArrayList,须要线程平安也不必 Vector,用 Collections.synchronizedList。啥也不晓得,用 ArrayList。

四、Set 汇合

4.1、特点

<font face= 黑体 >Set 也是 Collection 的子接口,特点是无序(存储程序和取出程序有可能统一),元素不可反复(通过 hashCode() 和 equals() 办法实现元素不可反复)。

4.2、HashSet 汇合

<font face= 黑体 > 底层数据结构是哈希表 ( 数组 + 链表 (JDK 1.8 之前)或者 数组 + 链表 + 红黑树 (JDK 1.8 之后)),通过 hashCode() 办法和 equals() 办法实现元素惟一, 先通过 hashCode() 办法计算出元素的哈希值,不同的话,间接存储元素,雷同的话,继续执行 equals() 办法,返回 true 的话不存储,返回 false 就存储。

五、Collections 汇合工具类

<font face= 黑体 >Collections 汇合工具类罕用办法如下:

  1. <font face= 黑体 >public static <T> void sort(List<T> list):排序
  2. <font face= 黑体 >public static <T> int binarySearch(List<?> list,T key):二分查找
  3. <font face= 黑体 >public static void reverse(List<?> list):汇合反转
  4. <font face= 黑体 >public static void shuffle(List<?> list):随机排序

六、Map 双列汇合

6.1、Map 和 Collection 的区别

  1. <font face= 黑体 >Map 汇合存储元素是成对呈现的,Map 汇合的键是惟一的,值是可反复的。
  2. <font face= 黑体 >Collection 汇合存储元素是独自呈现的。

6.2、Map 汇合的罕用性能

  1. <font face= 黑体 >增加性能:
    <font face= 黑体 >V put(K key,V value):增加元素,如果键是第一次存储,就间接存储元素,返回 null,否则,就用值把以前的值替换掉,返回以前的值;
  2. <font face= 黑体 >删除性能:
    <font face= 黑体 >void clear():移除所有元素;
    <font face= 黑体 >V remove(Object key):依据键删除键值对元素,并把值返回;
  3. <font face= 黑体 >判断性能:
    <font face= 黑体 >boolean containsKey(Object key):判断汇合是否蕴含指定的键;
    <font face= 黑体 >boolean containsValue(Object value):判断汇合是否蕴含指定的值;
    <font face= 黑体 >boolean isEmpty():判断汇合是否为空;
  4. <font face= 黑体 >长度性能:
    <font face= 黑体 >int size():获取元素的个数;

6.3、Map 汇合的遍历

  1. <font face= 黑体 > 键找值形式:通过 keySet() 办法获取所有的键,在获取所有的值;
  2. <font face= 黑体 > 键值对对象形式:通过 entrySet() 办法获取所以的键值对对象,在通过 entry.getKey() 办法和 entry.getValue() 办法获取键和值。

6.4、HashMap

<font face= 黑体 > 无序,线程不平安,容许 null 键和 null 值。

6.5、LinkedHashMap

<font face= 黑体 > 有序,线程不平安,容许 null 键和 null 值。

6.6、HashTable

<font face= 黑体 > 线程平安,效率低。不容许 null 键和 null 值。

正文完
 0