回顾集合()

集合

1.集合的体系

Collection

集合分为单列集合Collection和双列集合Map

Collection只有增删功能没有改查功能,特点是单列集合所有共性功能,有三种遍历方式(1.迭代器2.增强for3.forEach())

  • List

List

List集合有增删改查功能,,有4种遍历方式(1.迭代器2.增强for3.forEach()4.普通for)

特点是有序,可重复,有索引

List 接口下实现类ArrayList和LinkedList

  • ArrayList(底层数据结构:数组)

ArrayList(底层数据结构:数组)

ArrayList有增删改查功能,有序,可重复,有索引,有4种遍历方式(1.迭代器2.增强for3.forEach()4.普通for)

特点:是查询快,增删慢.

  • LinkedList(底层数据结构:双向链表)

LinkedList(底层数据结构:双向链表)

LinkedList有增删改查功能,还有特有的首尾操作方法,,特点是有序,可重复,有索引有4种遍历方式(1.迭代器2.增强for3.forEach()4.普通for)

特点是查询慢,增删快.

  • Set

Set

Set有增删改查功能,无序,不重复,无索引,有三种遍历方式(1.迭代器2.增强for3.forEach())

  • HashSet(底层数据结构是哈希表(数组+链表+红黑树))

HashSet(底层数据结构是哈希表(数组+链表+红黑树))

HashSet有增删改查功能,无序,不重复,无索引,有三种遍历方式(1.迭代器2.增强for3.forEach()).

无序的底层原理:存入值时,会得到数据的hash值,跟据hash值和数组长度进一步计算得出在数组种的位置,与存入值的顺序无关.

不重复的底层原理:当hash值相同,得出索引位置相同,会调用equals方法判断,如果时true,则不存,否则,存.

所以当往集合种存入自定义对象时,需要重写hashcode和equals方法来判断存入是否重复

  • LinkedHashSet(底层数据结构是在哈希表的基础上还有一个双向链表)其是HashSet的一个子类

LinkedHashSet(底层数据结构是在哈希表的基础上还有一个双向链表)其是HashSet的一个子类

LinkedHashSet有增删改查功能,有序,不重复,无索引,有三种遍历方式(1.迭代器2.增强for3.forEach())

  • TreeSet(底层数据结构是红黑树)

TreeSet(底层数据结构是红黑树)

TreeSet有增删改查功能,可排序,不重复,无索引,有三种遍历方式(1.迭代器2.增强for3.forEach())

排序的原理:对于String类和包装类有自己的排序规则,默认是升序.

对于自定义类的排序规则:

1.让该类实现Comparable接口,重写compareTo方法定义排序规则

2.创建集合对象时,给一个比较器对象,制定排序规则

3.两种都有,则使用比较器

Map

Map是双列集合,一个数据有两个值,一个key,一个value.map也被称为键值对集合.

三种遍历方法

1.键找值

通过Map集合获取所有key的Set集合(keySet()方法),遍历后再通过get(key)获得key对应的value

2.键值对

通过Map集合获取所有键值对的Set集合(entrySet()方法),遍历后获取每一个键值对对象的key和value

3.调用集合的forEach方法和lambda表达式

常用API

put(k,v)添加元素

remove(k)删除键值对

clear()清空

containsKey(k)判断是否有指定key

containsValue(v)判断是否有指定值

size()获取键值对个数

特点

1.:Map集合的key是无序,不重复,无索引的.value可以重复

2.Set集合的底层就是Map

  • HashMap(同HashSet)

HashMap(同HashSet)

特点:无序,不重复,无索引

  • LinkedHashMap(同LinkedHashSet)

LinkedHashMap(同LinkedHashSet)

特点:有序,不重复,无索引

  • TreeMap(同TreeSet)

TreeMap(同TreeSet)

特点:可排序,不重复,无索引

Collections

 addAll()一次性给集合添加多个顺序

shuffle()打乱集合顺序

sorted()对集合元素进行自然排序,或者自定义排序规则

————————

集合

1.集合的体系

Collection

集合分为单列集合Collection和双列集合Map

Collection只有增删功能没有改查功能,特点是单列集合所有共性功能,有三种遍历方式(1.迭代器2.增强for3.forEach())

  • List

List

List集合有增删改查功能,,有4种遍历方式(1.迭代器2.增强for3.forEach()4.普通for)

特点是有序,可重复,有索引

List 接口下实现类ArrayList和LinkedList

  • ArrayList(底层数据结构:数组)

ArrayList(底层数据结构:数组)

ArrayList有增删改查功能,有序,可重复,有索引,有4种遍历方式(1.迭代器2.增强for3.forEach()4.普通for)

特点:是查询快,增删慢.

  • LinkedList(底层数据结构:双向链表)

LinkedList(底层数据结构:双向链表)

LinkedList有增删改查功能,还有特有的首尾操作方法,,特点是有序,可重复,有索引有4种遍历方式(1.迭代器2.增强for3.forEach()4.普通for)

特点是查询慢,增删快.

  • Set

Set

Set有增删改查功能,无序,不重复,无索引,有三种遍历方式(1.迭代器2.增强for3.forEach())

  • HashSet(底层数据结构是哈希表(数组+链表+红黑树))

HashSet(底层数据结构是哈希表(数组+链表+红黑树))

HashSet有增删改查功能,无序,不重复,无索引,有三种遍历方式(1.迭代器2.增强for3.forEach()).

无序的底层原理:存入值时,会得到数据的hash值,跟据hash值和数组长度进一步计算得出在数组种的位置,与存入值的顺序无关.

不重复的底层原理:当hash值相同,得出索引位置相同,会调用equals方法判断,如果时true,则不存,否则,存.

所以当往集合种存入自定义对象时,需要重写hashcode和equals方法来判断存入是否重复

  • LinkedHashSet(底层数据结构是在哈希表的基础上还有一个双向链表)其是HashSet的一个子类

LinkedHashSet(底层数据结构是在哈希表的基础上还有一个双向链表)其是HashSet的一个子类

LinkedHashSet有增删改查功能,有序,不重复,无索引,有三种遍历方式(1.迭代器2.增强for3.forEach())

  • TreeSet(底层数据结构是红黑树)

TreeSet(底层数据结构是红黑树)

TreeSet有增删改查功能,可排序,不重复,无索引,有三种遍历方式(1.迭代器2.增强for3.forEach())

排序的原理:对于String类和包装类有自己的排序规则,默认是升序.

对于自定义类的排序规则:

1.让该类实现Comparable接口,重写compareTo方法定义排序规则

2.创建集合对象时,给一个比较器对象,制定排序规则

3.两种都有,则使用比较器

Map

Map是双列集合,一个数据有两个值,一个key,一个value.map也被称为键值对集合.

三种遍历方法

1.键找值

通过Map集合获取所有key的Set集合(keySet()方法),遍历后再通过get(key)获得key对应的value

2.键值对

通过Map集合获取所有键值对的Set集合(entrySet()方法),遍历后获取每一个键值对对象的key和value

3.调用集合的forEach方法和lambda表达式

常用API

put(k,v)添加元素

remove(k)删除键值对

clear()清空

containsKey(k)判断是否有指定key

containsValue(v)判断是否有指定值

size()获取键值对个数

特点

1.:Map集合的key是无序,不重复,无索引的.value可以重复

2.Set集合的底层就是Map

  • HashMap(同HashSet)

HashMap(同HashSet)

特点:无序,不重复,无索引

  • LinkedHashMap(同LinkedHashSet)

LinkedHashMap(同LinkedHashSet)

特点:有序,不重复,无索引

  • TreeMap(同TreeSet)

TreeMap(同TreeSet)

特点:可排序,不重复,无索引

Collections

 addAll()一次性给集合添加多个顺序

shuffle()打乱集合顺序

sorted()对集合元素进行自然排序,或者自定义排序规则