Java基础(4)集合

本文详细介绍了Java集合框架中的ArrayList、LinkedList、HashMap以及并发安全问题。ArrayList基于动态数组实现,适合查询,不适合频繁插入删除。LinkedList采用链表结构,适合插入删除。HashMap通过哈希表存储键值对,JDK1.8后引入红黑树提高效率。文章还探讨了集合的同步控制方法,如线程安全的Vector和fail-fast/fail-safe策略,并讨论了不同场景下集合的选择和使用注意事项。
摘要由CSDN通过智能技术生成

集合

1,图解范围

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

2,集合框架

接口和具体类

  • Collection
    • List
      • ArrayList
      • LinkedList
    • set
      • HashSet
      • TreeSet
  • Map
    • AbstractMap (class)
      • HashMap
      • TreeMap

集合详解

Collection:接口存储一组不唯一,无序的对象。

List:接口存储一组不唯一,有序的对象。

Set:接口存储一组唯一,无序的对象。

Map:接口存储一组键值对象,提供key到value的映射

ArrayList:实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高。

LinkedList:采用链表存储方式。插入、删除元素时效率比较高。

HashSet:采用哈希算法实现的Set,底层是用HashMap实现的,因此查询效率较高,由于采用hashCode算法直接确定元素的内存地址,增删效率也挺高的

常用方法

static <T> boolean addAll(Collection<? super T> c, T... elements) 
//将所有指定的元素添加到指定的集合。  
static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key) 
//使用二分搜索法搜索指定列表,以获得指定对象在List集合中的索引。
//注意:此前必须保证List集合中的元素已经处于有序状态。 
static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c) 
//使用二分搜索法搜索指定对象的指定列表。  
static <T> void copy(List<? super T> dest, List<? extends T> src) 
//将所有元素从一个列表复制到另一个列表中。  
static boolean disjoint(Collection<?> c1, Collection<?> c2) 
//如果两个指定的集合没有共同的元素,则返回 true 。  
static <T> void fill(List<? super T> list, T obj) 
//用指定的元素代替指定列表的所有元素。  
static int frequency(Collection<?> c, Object o) 
//返回指定 collection 中等于指定对象的出现次数。  
static int indexOfSubList(List<?> source, List<?> target) 
//返回指定源列表中指定目标列表的第一次出现的起始位置,如果没有此类事件,则返回-1。  
static int lastIndexOfSubList(List<?> source, List<?> target) 
//返回指定源列表中指定目标列表的最后一次出现的起始位置,如果没有此类事件则返回-1。  
static <T> ArrayList<T> list(Enumeration<T> e) 
//返回一个数组列表,其中包含由枚举返回的顺序由指定的枚举返回的元素。 
static <T extends Object & Comparable<? super T>>
T max(Collection<? extends T> coll) 
//根据其元素的 自然顺序返回给定集合的最大元素。  
static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp) 
//根据指定的比较器引发的顺序返回给定集合的最大元素。  
static <T extends Object & Comparable<? super T>>
T min(Collection<? extends T> coll) 
//根据其元素的 自然顺序返回给定集合的最小元素。  
static <T> T min(Collection<? extends T> coll, Comparator<? super T> comp) 
//根据指定的比较器引发的顺序返回给定集合的最小元素。  
static <T> boolean replaceAll(List<T> list, T oldVal, T newVal) 
//将列表中一个指定值的所有出现替换为另一个。  
static void reverse(List<?> list) 
//反转指定列表中元素的顺序。  
static void rotate(List<?> list, int distance) 
//当distance为正数时,将List集合的后distance个元素“整体”移到前面;当distance为负数时,将list集合的前distance个元素“整体”移到后边。该方法不会改变集合的长度。
static void shuffle(List<?> list) 
//对List集合元素进行随机排序。  
static <T extends Comparable<? super T>>
void sort(List<T> list) 
//根据元素的自然顺序对指定列表按升序进行排序。 
static <T> void sort(List<T> list, Comparator<? super T> c) 
//根据指定比较器产生的顺序对指定列表进行排序。
static void swap(List<?> list, int i, int j) 
//在指定List的指定位置i,j处交换元素。

同步控制方法

Collectons提供了多个synchronizedXxx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值