博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

List和Set

Posted on 2020-08-08 21:37  kali98k  阅读(92)  评论(0编辑  收藏  举报

 

一、List

1.1特点

@它是一个元素存取有序的集合。

@它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引是一个道理)

@集合中可以有重复的元素,通过元素的equals方法,来比较是否为重复的元素

1.2 常用方法

public void add(int index, E element) : 将指定的元素,添加到该集合中的指定位置上。

public E get(int index) :返回集合中指定位置的元素。

public E remove(int index) : 移除列表中指定位置的元素, 返回的是被移除的元素。

public E set(int index, E element) :用指定元素替换集合中指定位置的元素,返回值的更新前的元素。

1.3子类

1ArrayList集合数据存储的结构是数组结构

特点:元素增删慢,查找快

2LinkedList集合数据存储的结构是链表结构。方便元素添加、删除的集合。

LinkedList是一个双向链表

二、Set

2.1特点

Set 接口中元素无序

2.2HashSet(无序)

1)概念

java.util.HashSet 底层的实现其实是一个 java.util.HashMap 支持

HashSet 是根据对象的哈希值来确定元素在集合中的存储位置,因此具有良好的存取和查找性能。保证元素唯一性 的方式依赖于: hashCode equals 方法。

(2)HashSet集合存储数据的结构(哈希表)

哈希表是由数组+链表+红黑树

 

 

 

 

 

 

 

 

HashSet存储自定义类型元素

 

HashSet中存放自定义类型元素时,需要重写对象中的hashCodeequals方法,建立自己的比较方式,才能保 证HashSet集合中的对象唯

(3)LinkedHashSet (有序)

是链表和哈希表组合的一个数据存储结构

LinkedHashSet继承自HashSet,源码更少、更简单,唯一的区别是LinkedHashSet内部使用的是LinkHashMap

三、Collection

一、常用功能

java.utils.Collections 是集合工具类,用来对集合进行操作。部分方法如下:

public static <T> boolean addAll(Collection<T> c, T... elements) :往集合中添加一些元素。

public static void shuffle(List<?> list) 打乱顺序 :打乱集合顺序。

public static <T> void sort(List<T> list) :将集合中元素按照默认规则排序。

public static <T> void sort(List<T> list,Comparator<? super T> ) :将集合中元素按照指定规则排 序。