集合
1.集合的体系
Collection
集合分为单列集合Collection和双列集合Map
Collection只有增删功能没有改查功能,特点是单列集合所有共性功能,有三种遍历方式(1.迭代器2.增强for3.forEach())
-
List
List集合有增删改查功能,,有4种遍历方式(1.迭代器2.增强for3.forEach()4.普通for)
特点是有序,可重复,有索引
List 接口下实现类ArrayList和LinkedList
-
ArrayList(底层数据结构:数组)
ArrayList有增删改查功能,有序,可重复,有索引,有4种遍历方式(1.迭代器2.增强for3.forEach()4.普通for)
特点:是查询快,增删慢.
-
LinkedList(底层数据结构:双向链表)
LinkedList有增删改查功能,还有特有的首尾操作方法,,特点是有序,可重复,有索引有4种遍历方式(1.迭代器2.增强for3.forEach()4.普通for)
特点是查询慢,增删快.
-
Set
Set有增删改查功能,无序,不重复,无索引,有三种遍历方式(1.迭代器2.增强for3.forEach())
-
HashSet(底层数据结构是哈希表(数组+链表+红黑树))
HashSet有增删改查功能,无序,不重复,无索引,有三种遍历方式(1.迭代器2.增强for3.forEach()).
无序的底层原理:存入值时,会得到数据的hash值,跟据hash值和数组长度进一步计算得出在数组种的位置,与存入值的顺序无关.
不重复的底层原理:当hash值相同,得出索引位置相同,会调用equals方法判断,如果时true,则不存,否则,存.
所以当往集合种存入自定义对象时,需要重写hashcode和equals方法来判断存入是否重复
-
LinkedHashSet(底层数据结构是在哈希表的基础上还有一个双向链表)其是HashSet的一个子类
LinkedHashSet有增删改查功能,有序,不重复,无索引,有三种遍历方式(1.迭代器2.增强for3.forEach())
-
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)
特点:无序,不重复,无索引
-
LinkedHashMap(同LinkedHashSet)
特点:有序,不重复,无索引
-
TreeMap(同TreeSet)
特点:可排序,不重复,无索引
标签:遍历,回顾,索引,重复,增删,forEach,集合,数据结构 From: https://www.cnblogs.com/zlsame/p/17216667.html