Java-集合(List&Set&Queue)

1 篇文章 0 订阅
1 篇文章 0 订阅

集合

概念:集合是长度可以改变,存放任意数据类型的动态数组

Collection

接口:存放无序、不唯一的对象。一般不会直接使用该接口来实现。

Collection api

  1. obj.size()获取集合长度;
  2. isEmpty()判断集合是否为空;
  3. contains()判断集合是否包含某个元素;
  4. add()向集合中添加某个元素;
  5. remove()删除;
  6. void clear()把集合清空;
  7. equals()判断两个集合是否相等;
  8. hashCode()返回hash值;
  9. Iterator iterator用迭代遍历集合;
  10. Object[] toArray将集合转化成Object类型数组等;

Collection子接口

List:存放有序、不唯一的对象;

List api:
1.get()通过下标获取集合中的元素
2.set()向集合指定位置添加元素,如该位置已经有元素了就替代之
3.indexOf()查找集合中指定位置的元素
4.subList(from,to)截取集合中的元素(根据下标获取)

List实现类
ArrayList:查找元素很快(通过寻址地址和下标查找),但是插入和删除元素不方便(要移动兄弟元素才能插入和删除)。

Iterator迭代,将集合中的元素遍历
Iterator iterator=ArrayList.Iterator();
Iterator api
1.hasNext() 判断集合中是否有下一个元素
2.Next() 返回该指向的所有元素

Vector:一个早期的List实现类,和ArrayList相似;
Vector的子接口:
Stack:实现了“后进先出”的栈(把最后加入的元素首先取出)。
Stack api
stack.peek() 把集合中最后加入的元素取出,但不会影响原集合(相当于复制)。
stack.pop()把集合中最后加入的元素取出,但会把原集合中该元素删除。

LinkedList实现“先进先出”队列,链表的形式存储分散的内存空间。
添加和删除元素很方便,但查询较慢。
LinkedList api
add()
push()
offer()以上三个都是添加元素
addFirst()在集合起始位置添加元素
addLast()在集合最后添加元素
list.peek()取出集合第一个元素
list.peekLast()取出集合最后一个元素
list.pop()取出集合第一个元素,删掉原集合中该元素

Queue 队列集合
PriorityQueue 在使用的时候需要注意,添加到该队列中的数据必须有序,即对象具备排序的功能。

Set集合:采用散列的存储方式,可以存储一组无序且唯一的对象。
Set常用的实现类
HashSet
存储一组无序、唯一的对象(无序是指存储和遍历时的顺序是无须的)。

LinkedHashSet
存储一组有序、唯一的元素(这里的有序是指元素的存储顺序和遍历顺序一致)。
LinkedHashSet 判断两个对象是否相等的原理:
先判断两个对象的hashCode值是否相等,hashCode是指将内存地址、属性等一系列信息映射成一个数值,这个数值叫做散列值,这就是该对象的hashCode。
hashCode值即使相等还不能确定是两个对象相等,还需要使用equals方法进行验证,如果返回时true,则是同一个对象。

TreeSet
存储一组有序、唯一的元素(有序是指将集合中的元素自动按照升序排列并输出)。
如果集合中的元素无法排序,则可以让该类继承Comparable接口,并重写compareTo方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值