6-28-ArraysList-LinkedList-HashSet

集合类(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(索引);删除指定位置的元素
Listremove(对象),删除某一个需要的对象;
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

One_Gun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值