4

怎样才能拿到高薪?JDK掌握的集合类库知识梳理,网友大喊666

 3 years ago
source link: https://segmentfault.com/a/1190000039885874
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

今日分享开始啦,请大家多多指教~

今天给大家讲述的是集合类库,所有接口只是简单的对集合类型做了区分,划分了四类集合,分别为List序列,Queue队列,Set集,Map映射集。并对每个类型的集合进行了简单的定义,用于确立此类集合的特点。Java中针对每种集合都有多种实现用于应对不同的场景。

一、集合的概述

当需要在java程序中记录多个类型不同的对象数据时,则准备一个集合。

集合的顶层框架是:java.util.Collection集合和java.util.Map集合

Collection存取元素单位是单个元素,Map是单对元素。

二、Collection集合

(一)Collection分类

Collection包括List接口,Queue接口和Set接口。

List接口包括:ArrayList类,LinkedList类,Stack类,Vector类

Set接口包括: HashSet类,TreeSet类

(二)Collection的常用方法

boolean add(); 添加单个元素

boolean addAll(); 添加全部元素

boolean contains(); 判断是否包含指定对象

boolean containsAll(); 判断是否包含全部对象

boolean retainAll(); 保留当前集合中存在且参数集合中存在的所有对象

boolean remove(); 移除某个元素

boolean removeAll(); 移除指定的所有元素

void clear(); 清空集合

int size(); 返回包含对象的个数

boolean isEmpty(); 判断是否为空

boolean equals(); 判断是否相等

int hashCode(); 获取当前集合的哈希码值

Object[] toArray(); 将集合转为数组

Iterator iterator(); 获取当前集合的迭代器

(三)Collection集合中添加元素

image.png

(四)判断是否包含某些元素

image.png

(五) 移除集合中某些元素

image.png
image.png

(六)集合与数组间的相互转换

image.png

三、Iterator接口(迭代器)

迭代器是什么:迭代器是用于遍历集合中的元素的一种方式

常用方法:

boolean hasNext(); 判断集合中是否有可以访问的元素

E next(); 用于取出一个元素并且指向下一个元素

void remove(); 用于删除访问到的最后一个元素

通过迭代器遍历集合

image.png
image.png

四、for……each遍历集合

image.png

五、List集合

(一)List分类

List的实现类主要有ArrayList,LinkedList,Stack ……

ArrayList: 底层是采用动态数组进行数据管理的,支持下标访问,增删元素不方便。

LinkedList: 底层是采用双向链表进行数据管理的,访问不方便,但是增删元素方便

Stack:栈,先进后出,后进先出

(二)List常用方法

void add(int index,E element) 向集合中指定位置添加元素

boolean addAll(int index,Collection<?extends E>c) 向集合中添加所有元素

E get(int index) 从集合中获取指定位置的元素

int indexOf(Object o) 查找参数指定的对象是否存在,存在则返回对象所在下标,不存在返回-1

int lastIndexOf(Object o) 反向查找参数指定的对象是否存在,存在则返回对象所在下标,不存在返回-1

E set(int index,E element) 修改指定位置的元素

E remove(int index) 删除指定位置的元素

List subList(int fromIndex,int toIndex) 用于获取子List

(三)List集合中增加元素

image.png

(四)List集合中查找元素

image.png

(五)List集合中修改元素

image.png

(六)List集合中删除元素

image.png

(七) Stack

image.png

六、Queue集合

(一) Queue概述

先进先出, 实现类主要有LinkedList类

(二) Queue集合常用方法

boolean offer(E e); 将一个对象添加至队尾,若添加成功则返回true

E poll(); 从队首返回并删除一个元素

E peek(); 返回队首的元素,但并不删除

(三) Queue集合添加,打印,删除元素

image.png

<> 里面写数据类型,表示只能存放该数据类型的数据。

(一)自定义泛型类

image.png
image.png

(二)自定义泛型类测试

image.png

(三)自定义泛型类被子类继承时

// person类中的泛型在继承的时候都是没有保留的

  1. public class SubPerson extends Person { //丢弃泛型并且没有指定类型,默认为Object类型 }
  2. public class SubPerson extends Person<String> { //丢弃泛型但是指定了泛型类型 }

(四)自定义泛型方法

语法格式:

[访问权限] <泛型> 返回值类型 方法名[泛型标识 参数名称]{ 方法体; }

public <E> void t[E e]{}

(五)泛型通配符???

<?> 无限制通配符:表示我们可以传入任意类型的参数

<? extends E> 类型的上界是E,只能是E或者E的子类

<? super E> 类型的下界是E,只能是E或者E的父类

八、Set集合

(一)Set集合概述

Set集合不分进入次序

Set数据不允许重复,list的数据允许重复

Set集合的实现类主要有HashSet(底层是哈希表进行数据管理的)

和TreeSet(底层是红黑树进行数据管理的)

(HashSet的底层是Map集合

有序二叉树(是特殊的二叉树):左子节点<根节点<右子节点红黑树数特殊的有序二叉树 )

(二)HashSet集合中添加元素

image.png

(三)TreeSet

image.png

九、Map集合(java.util.Map)

(一)Map集合概述

Map<K,V> K:Key,相当于目录 V:Value,值

Key是不允许重复的,该列相当于collection

Key和Value都是String类型的

Map集合的主要实现类: HashMap类,TreeMap类,Hashtable类

(二)Map集合常用方法

V put(K Key,V value) 将该对数据存入Map,如果集合中中已经包含Key,那么替换Key

所对应的Value,返回值为该Key来源的Value,若没有则返回null

V get(Object Key) 返回与参数Key所对应的Value对象,如果不存在则返回null

boolean containKey(Object Key) 判断集合中是否包含指定的Key

boolean containValue(Object Value) 判断集合中是否包含指定的KeyValue

V remove(Object Key) 根据参数指定的key进行删除

Set<k> KeySet() 返回此映射中包含的键的Set视图

Collection<V> values() 返回此映射总包含的值的Set视图

Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射的Set视图

Java的集合类库很是丰富,囊括了大部分的常见数据结构形式,让我们可以有目的性的选择适合当前业务场景和功能场景的集合类。合适的集合框架可以最大程度地提升执行速度和效率。

今日份分享已结束,请大家多多包涵和指点!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK