最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

集合~~~

运维笔记admin89浏览0评论

集合~~~

集合~~~

一、集合:动态增长长度的容器

Java的集合框架是由很多接口、抽象类、具体类组成的,都位于java.util包中。

集合分类:

单列集合Collection

双列集合Map

二、List集合

List 中的数据对象有顺序且可以重复。

相关方法:

void add(int index,Object element) 将元素element插入在List集合的指定索引位置

boolean addAll(int index,Collection c) 将集合c包含的所有元素插入到List集合的指定索引位置

Object get(int index) 返回集合索引index处的元素

Object remove(int index) 删除index索引处的元素

Object set(int index,Object element) 将索引index处元素替换成element元素,并将替换后的元素返回

int indexOf(Object o) 返回对象o在List集合中首次出现的位置索引

int lastIndexOf(Object o) 返回对象o在List集合中最后一次出现的位置索引

List subList(int fromIndex,int toIndex) 返回从索引fromIndex(包括)到toIndex(不包括)处所有元素集合组成的子集合

Object[] toArray() 将集合元素转换成数组

default void sort(Comparator<? super E>c) 根据指定的比较器规则对集合元素排序

1.ArrayList

底层是数组实现的。查询快、增删慢。

2.LinkdList

底层是链表实现的。查询慢、增删块。

3.Vector

是线程安全的数组列表,和ArrayList类似

在扩容时,ArrayList每次增长1.5倍,vector每次增长2倍。

三、List接口集合迭代

1.for循环遍历 删除元素时要注意索引

2.增强for循环的遍历 不允许在其中做删除元素操作

3.迭代器遍历

四、Set集合

Set中的元素无序且不重复。

1.HashSet

当向HashSet集合中添加一个元素时,首先会调用该元素的hashCode()方法来确定元素的存储位置,然后再调用元素对象的equals()方法来确保该位置没有重复元素。

无索引、不能存储重复元素、存储无序。

2.TreeSet

内部采用平衡二叉树来存储元素,来保证TreeSet集合中没有重复的元素,并且可以对元素进行排序。

排序分为两种:自然排序和定制排序

自然排序:存储的对象必须实现Comparable接口,并重写compareTo()方法。

定制排序:要求自定义一个比较器,该比较器必须实现Comparator接口,并重写compare()方法,然后将该比较器作为参数传入集合的有参构造。

二叉树就是每个节点最多有两个子节点的有序树,每个节点及其子节点组成的树称为子树,左侧的节点称为"左子树",右侧的节点称为"右子树",其中左子树上的元素小于它的根结点,而右子树上的元素大于它的根结点。

TreeSet集合没有元素时,新增的第1个元素会在二叉树最顶层;接着新增元素时,首先会与根结点元素比较;如果小于根节点元素就与左边的分支比较;如果大于根节点元素就与右边的分支比较;以此类推

五、Set接口集合迭代

1.增强for循环的遍历

2.迭代器遍历(Iterator)

六、Map集合

Map接口是一种双列集合,它的每个元素都包含一个键对象key和值对象Value,键和值对象之间存在一种对应关系,称为映射。

Map中的映射关系是一对一的,一个键对象Key对应唯一一个值对象Value,其中键对象Key和值对象Value可以是任意数据类型,并且键对象Key不允许重复,这样在访问Map集合中的元素时,只要指定了Key,就能找到对应的Value。

相关方法:

put(K key,V value) :添加键值对

remove(Object key) :删除键及键对应的值

void clear() :清空Map集合

boolean containsKey(Object key) :判断是否包含该键

boolean containsValue(Object value) :判断是否包含该值

boolean isEmpty() :判断该map是否为空

int size() :返回map中键值对的数量

get(Object key) :返回该键对应的值

Collection<V> values() :返回此映射中包含的值的集合视图。

Set<K> keySet() :返回map中键值对映射的set视图

Set<Map.Entry<K,V>> entrySet():返回Map集合中所有的键值对对象的集合(Set集合)。

1.HashMap

该集合的键和值允许为空,但键不能重复

HashMap底层结构,以及添加元素的过程:

2.TreeMap

可根据键进行排序,但键的类要实现comparable接口

3.HashTable

是线程安全的,键不能为null

八、Map接口集合迭代

1.根据键找值 keySet()

获取所有键的集合

遍历键的集合,获取到每一个键

根据键找值

2.根据键值对对象找键和值 entrySet()

获取所有键值对对象的集合

遍历键值对对象的集合,获取到每一个键值对对象

根据键值对对象找键和值

九、Collections类

是集合类的工具类,与数组的Arrays类相似

相关方法:

addAll(Collection<? super T> c, T... elements);

binarySearch(List<? extends Comparable<? super T>> l ist, T key)

sort(List<T> l ist)

sort(List<T> l ist, Comparator<? super T> c) 后面讲

swap(List<?> l ist, int i, int j):交换位置为i和j的元素位置

copy(List<? super T> dest, List<? extends T> src) ; 注意 dest size需大于等于src.size

emptyList() 返回为空的集合,不能添加数据

fill(List<? super T> l ist, T obj)

max(Col lection<? extends T> col l)

min(Col lection<? extends T> col l)

replaceAl l(List<T> l ist, T oldVal, T newVal)

reverse(List<?> l ist):倒序

shuffle(List<?> l ist) 随机排序

十、泛型

也叫参数化类型,泛型提供了编译时类型安全检测。

集合中可以存储任意类型的对象元素,但是当把一个对象存入集合后,集合会“忘记” 这个对象的类型,将该对象从集合中取出时,这个对象的编译类型就统一变成了Object类型。

发布评论

评论列表(0)

  1. 暂无评论