数据结构中最基本的两个结构是数组和链表(物理结构);
数组:整块内存,通过下标访问;
链表:Node{item,pre,next};
集合框架:接口,实现类,算法类;
Collection(顶接口):element
List(子接口):可重复,有序,有下标;
ArraryList(实现类):动态数组;
LinkedList(实现类):链表,java是双项链表,有前驱和后继;
Vector(实现类):
Stack(实现类):栈,先进后出,push,pop,peek;
Queue(子接口):先进先出
Deque(子接口):双端队列,任一端可进可出;
LInkedList(可实现列表,队列,双端队列,栈类);
ArrayDeque(实现类);
priorityQueue(实现类):优先队列;
Set(子接口):不重复,无序,无下标;
HashSet(实现类):
1.Set接口最重要的实现类;
2.元素是否重复一般通过equals来判断(也可以用hashcode),可在类中重写equals方法;
3.判断是否重复的时间复杂度O(1);contain(Object)
LinkedHashSet(实现类):内部增加了一个链表来保持顺序;
SoretedSet接口:排序;
TreeSet(实现类):内部是一个二叉树,可使用比较器;
HashSet与TreeSet中的元素都是不重复的,但判断依据不同;
HashSet是通过hashcode和equals方法来判断;
TreeSet是通过比较器来判断是否重复;
目前使用最多的实现类是
ArrayList
HashSet
Hashmap;
Map(顶接口):key-value
Map中存储的数据是成对出现的;
每个key对应一个value,key是不能重复的;
通过key来查询value时,时间复杂度是o(1);
HashMap(实现类):Key-values;
put(key,value);
remove(key);
get(Key);
contains();
size();
isEmpty();
clear():
遍历:
keys;
-------------------------------------------------------------------------------
算法类:
Collections;
Arrays;
比较器
Comparable:内部比较器,自然排序;
Comparator:外部比较器,自定义规则;
遍历元素
1.for each
2.iterator(集合的子接口):迭代器,遍历某个集合中的数据;
iterable(实现类):可迭代的;
所有集合都有一个iterator方法,即获得迭代器;
iterator
LinkedHashSet:也是一个Hashset,内部增加了一个链表来维护顺序;
SortedSet:是Set的子接口,在原有的功能下,增加了排序的能力;即SortdeSet是排序的Set;
常用方法:
E first():返回第一个(最小)元素;
E last():返回最大的元素;
SortedSet<E> headSet(E e):返回比e小的元素的集合;
Sortset
TreeSet