Collection集合

Collection集合的体系结构

 

 

List集合存储元素的特点

List集合存储元素特点有序可重复,存储的元素有下标。 有序指的是存进去的顺序,取出来还是同样的顺序。并不是按照大小排列的。有序是因为List集合都有下标,下标从0开始,以1递增。

set集合存储元素特点

没有顺序不重复,无序表示存进去这个元素的顺序取出来就不一定是这个顺序了,Set集合元素中没有下标。而且元素还不能重复。

 List集合中常用的方法

ArrayList<E>  

  • add(E e) : boolean 存储指定类型(E:泛型类型)的元素

  • add(int index, E element) : void 在指定下标位置存储指定类型的元素,原有位置的元素会依次后移

  • remove(int index) : E 删除指定下标位置的元素,返回被删除的元素

  • remove(Object obj) : boolean 删除指定的元素(如果有重复的,只会删除第一个找到的元素)

  • set(int index, E element) : E 修改指定下标位置的元素,返回被替换的元素

  • get(int index) : E 根据下标查询元素

  • size() : int 查询集合中存储的元素数量

  • contains(Object o) : boolean 判断集合中是否存在指定的元素

  • indexOf(Object o) : int 查询指定元素在集合中的下标,找不到会返回 -1

  • lastIndexOf(Object o) : int 从后往前查找指定元素在集合中的下标,找不到会返回-1

  • clear() : void 清空集合

  • isEmpty() : boolean 判断集合是否是空的(没有一个元素)

LinkedList<E>

  • addFirst(E e) : void 向前追加元素

  • addLast(E e) : void 向后追加元素

  • removeFirst() : E 删除第一个元素

  • removeLast() : E 删除最后一个元素

  • getFirst() : E 查询第一个元素

  • getLast() : E 查询最后一个元素

        其他方法略,大多和 ArrayList 一致,因为这些方法都是定义在 List 接口中,所以同为 List 接口实现类,当然都会重写相应的方法。

注意:方法名虽然相同,代表的只是方法功能一致,但不代表实现一致!

ArrayList和LinkedList的区别(面试题)

相同点:

        都是 List 接口的实现类,可以存储可重复的,有序的数据

不同点:

        ArrayList 底层数据结构是数组结构,在实现数据的查询时,因为数组结构有下标,所以效率较高。但是,在增加或删除数据时,因为数组结构长度不可变,所以会创建一个新的数组,导致效率较低。它适合于查询较多,增删较少的情况。

        

        LinkedList 底层数据结构是链表结构,在增加或删除数据时,尤其是首尾的增删,因为链表结构增加节点或删除节点,只需要修改下一个连接的地址即可,效率较高。但是,在实现数据的查询时,没有下标,只能从首节点依次进行查询,效率较低。它适合于增删较多,查询较少的情况。

Set集合常用方法

HashSet<E>

  • add(E e) : boolean 存储元素(去重数据)

  • remove(E e) : E 删除数据

  • size() : int 获取集合的元素数量

  • contains(Object o) : boolean 判断是否包含指定的元素

因为 Set 和 List 都是继承自 Collection 接口,所以很多方法也是相同的。

注意: 如果用 Set 存储引用数据类型数据,需要重写相应类的 equals 和 hashCode 方法。不然,不认为是重复数据,不会去重。

List集合的遍历

1.循环下标实现:

for (int i = 0; i < list.size(); i++) {
    News news = list.get(i);
    System.out.println(news);
}

2.增强for实现

for (News news : list) {
    System.out.println(news);
}

3.迭代器

Iterator<News> iterator = list.iterator();
// hasNext() : boolean 判断是否还有下一个元素
// next() : E 取出下一个元素
//      if (iterator.hasNext()) {

//          News next = iterator.next();
//          System.out.println(next);
//      }​
while (iterator.hasNext()) {
    News next = iterator.next();
    System.out.println(next);
}

Set集合的遍历

1.增强for

for (News news : newsSet) {
	System.out.println(news);
}

2.迭代器

Iterator<News> iterator = newsSet.iterator();
while (iterator.hasNext()) {
    News next = iterator.next();
    System.out.println(next);
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值