程序员中的稀有动物之Java集合框架Collection---List接口和Set接口

为什么使用集合框架?

1.解决数组的明显缺陷

Colletion接口

1.存储一组不唯一的(指的是内存地址)、无序的对象

List接口

1.List接口继承自Collection接口,所以它拥有Collection的全部方法
2.List不可以被实例化,只能通过它的实现类来实现


List的作用

存储一组不唯一的(指的是内存地址)、有序的对象


List常用的两种实现类

1.ArrayList

1.长度可变的数组
2.在内存中分配连续的内存空间
3.遍历元素和随机访问元素的效率更高

ArrayList为什么长度可变呢?

ArrayList在创建的时候会默认占据10个连续空间,当添加元素时如果空间不够,则长度加5

ArrayList的常用方法
size()
返回列表的长度,等同于数组中的Array.length属性

boolean add(Object o)
在末尾位置添加元素

void add(int index,Object o)
在指定位置添加元素

Object get(int index)
获取index位置的元素,等同于数组中的array[index],使用前注意类型转换

boolean contains(Object o)
判断是否存在指定元素

boolean remove(Object o)
删除指定元素

Object remove(int index)
删除指定位置的元素

isEmpty()
判断集合是否为空


2.LinkedList

1.以链表的形式存储
2.插入、删除元素的效率更高


LinkedList的常用方法
void addFirst(Object o)
在列表第一个位置添加元素

void addLast(Object o)
在列表最后一个位置添加元素

Object getFirst()
获取第一个位置的元素

Object getLast()
获取最后一个位置的元素

Object removeFirst()
删除第一个位置的元素

Object removeLast()
删除最后一个位置的La元素


List使用时应该注意些什么

1.列表中存储的都是一个个的对象,操作前必须进行强制类型转换(或者使用泛型来约束它的类型)

2.可以使用父类类型指向子类对象,但是只能调用子类重写父类的方法,无法调用子类特有的方法


Array List与LinkedList比较

1.相同点

  • 同为List的实现类,元素有序、不唯一、长度可变
  • 共有Collection与List的通用方法

2.不同点

  • 存储的方式不同
  • 适用情况不同

Set接口

Set接口是Collection接口的一个常用子接口
Set接口常用的实现类是HashSet
存储一组唯一的、无序的对象
Set中存放的是对象的引用


Set是如何实现存放一组唯一的对象?

通过equals()方法来比较对象是否相等,比较的是对象的内容,因为equals()方法已经重写了


HashSet集合有哪些特性

1.集合内的元素是唯一的、无序的
2.HashSet类是非线程安全的
3.允许集合的元素值为null


如何来遍历HashSet

方法一:通过增强型for

Set set = new HashSet();
  set.add("我是set");
  set.add("我也是set");
  set.add("我还是set");
  //增强型for循环
  for(Object o:set) {
   String str = (String)o;
   System.out.println(str);
  }

这里遍历取到的都是Object类型的元素,操作时需要进行类型转换


也可以使用泛型来约束它的元素类型,代码如下:

Set<String> set = new HashSet<String>();//使用泛型约束该集合存储的元素只能是类型
  set.add("我是set");
  set.add("我也是set");
  set.add("我还是set");
  for(String o:set) {
   System.out.println(o);//可以直接输出,因为存储的是String类型的元素
  }

来看一下结果
在这里插入图片描述
好像与想象的不太一样,为啥没有按我添加的顺序输出呢?
这是因为Set本身存储的就是一组无序的对象


方法二:通过迭代器Iterator
每个集合都有一个iterator()方法,是从Collection接口那继承过来的

Set<String> set = new HashSet<String>();
Iterator <String> interator = set.iterator();//生成一个迭代器
  while(interator.hasNext()) {//判断是否有下一个元素
   System.out.println(interator.next());//输出下一个元素
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值