集合类(Collection)
1. List(有序可重复)
1.1 ArrayList
1.ArraysList:容器类(在数据结构中可以理解为顺序表)
ArraysList<String> list=new ArraysList<>();
容器里面放的都是Object类型的;不可以放基本类型;
<>尖括号里放的是范型,范型的使用可以进行编译器校验,约束容器里放的元素的类型;
ArryasList有序不是排序;
ArraysList遍历用的是size();
重点来了:一个我不太了解的迭代器
Inerator<String> it=list.iterator();
while(it.hasNext()){
System.out.println(it.next());
it.remove();
}//如果边取边删的话,用这个迭代器比较好,其他的用foreach迭代器比较好
List.of();可用,但是长度不可再改变,所以,不常用;
List.addAll();方法一一次性把另外一个元素添加到自己的尾部
List.add(索引,对象)该add是往指定位置插入,跟常规添加的add不同;该方法,谨慎使用
List.remove(索引);删除指定位置的元素
List。remove(对象),删除某一个需要的对象;
List.clear()慎用,清空;
List.isEmnty()判断容器,是否为空,
List.set();修改/替换容器;
List.asList(),反转为list集合;
List.subList()获取子集
List.retainAll()判断两个容器是否包含里面元素;
1.2 LinkedList(双向列表实现List)
栈和队列:
LIFO:后进先出;
FIFO:先进先出;
既是List又是Queue;
链表优先用foreach
从List角度来比较一下,ArraysList和LinkedList
大量根据下标查询的用ArrarysList,
大量增删元素,用LinkedList;
LinkedList.addFirst();头部添加元素;
LinkedList.addLast();尾部添加元素;
//队列角度
LinkedList.push("");压栈,入栈;
LinkedList.pop();出栈,弹栈;
LinkedList.offer();等于add;
LinkedList.poll();弹栈
LinkedList.remove()删除
LinkedList.removeFirst();删头;
LinkedList.removerLast();删尾;
附加 :在没有并发的情况下,优先使用ArrayDeque;
ArrayDeque arrayDeque;//循环数组实现的双端队列;
ArrayBlocking queue;
LinkedBlockingDeque linkBlockingDeque;
2. Set(无序但不可重复)(无下标索引)
HashSet 是HashMap(散列表,哈希表)的key实现
很强的局限性只能迭代;
要求里面的元素一定要是实现Hashcode和equals方法;
函数迭代方式 对象.forEach(System.out::println);
HashSet<> hashSet=new HashSet<>();
-----------------------------------------------------------------------------
可以排序的set,红黑树(性能极好的平衡二叉排序树)
不要滥用,毕竟较为消耗性能;
TreeSet<> treeSet=new TreeSet<>();
-----------------------------------------------------------------------------
可以保存顺序的一种set
LinkedHashSet linkedHashSet;
以上内容均为自己理解,不作为准确定理。 选择性观看,持续跟新进度,喜欢感谢关注 CSDN博主:One_Gun