集合(Collection,Map)

集合

我们用数组来存储数据,数组的长度一旦固定就没有办法修改了,但是我们有时并不知道到底需要存放多少数据。如果我们要在数组中增加或删除操作会移动大量元素的位置,并且一个数组只能存放一种数据类型。

集合(容器)可以帮助我们解决上面提到的一些问题。

总结图
在这里插入图片描述
在这里插入图片描述

基本概念

Java容器类类库主要划分为两个不同的概念

  1. Collection, 是一个存放独立元素的序列,它是一个接口。它还有几个子接口List(按插入顺序保存元素),Set(不能有重复元素),Queue(按照排队规则来确定对象产生的顺序,通常与被插入顺序相同)
  2. Map,存放 一组一组的键值对,允许使用键来查找值。

我们需要在创建集合时指定所使用的精确类型。

List<Apple> list = new ArrayList<Apple>();

使用这种方式创建集合的时候需要注意,当我们需要使用具体类的额外方法时不能向上转型。

添加元素

Java中Arrays和Collections类都有很多使用的方法,可以在一个Collection中添加元素。

public class AddingGroup {
   
    public static void main(String[] args) {
   
        Collection<Integer> collection = new ArrayList<Integer>(Arrays.asList(1,2,3,4));
        Collection<Integer> collection2 = new ArrayList<Integer>();
        //Collections.addAll()可以接收Collection对象,数组或一个由逗号分割的列表,首选
        Collections.addAll(collection2,new Integer[]{
   1,2,4});
        Collection<Integer> collection3 = new ArrayList<Integer>();
        //collection.addAll()只能接收Collection对象作为参数
        //collection3.addAll(new Integer[]{123,123})
        collection3.addAll(new ArrayList<>(Arrays.asList(123,123)));

        //这样写看似没有什么问题,如果视图使用add()或者delete()来操作collection对象,在运行时会报错
        //原因是,Arrays.asList()虽然可以当作是List,但是其底层表示的还是数组,因此不能调整尺寸
        Collection collection4 = Arrays.asList(1,2,3,4);
        collection4.add(5);
        for (Object o : collection4) {
   
            System.out.println(o);
        }
    }
}

List

有两种类型的List,基本的ArrayList,它擅长随机访问元素,但是在中间插入或删除元素时较慢。另一种是LinkedList,中间插入或删除的代价低,提供了优化的顺序访问,随机访问较慢。

public class Pets {
   
    static List<Pet> arrayList(){
   
        List<Pet> petList = new ArrayList<Pet>();
        petList.add(new Pet("Rat"));
        petList.add(new Pet("Manx"));
        petList.add(new Pet("Mutt"));
        petList.add(new Pet("Mouse"));
        petList.add(new Pet("Pug"));
        petList.add(new Pet("Cymric"));
        petList.add(new Pet("Pug"));
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值