java—容器(1)

(一)容器的概念

  • 创建命名的引用每次只能持有一个对象。但是在编程中,我们需要在任意时刻和任意位置创建任意数量的对象。为了解决这一问题,我们首先可以想到对象数组,对象数组可以保存多个对象,但是对象数组有固定的尺寸,而我们在写成程序时并不知道需要多少个对象,因此使用数组就会受限。
  • 为此,java实用类库中提供了一套相当完整的容器类来解决问题。其中基本类型是List,Set,Queue,Map。这些对象类型也称为集合类。但是java中使用了Collection这个名字来指代该库中的一个特殊子类,因此食用容器来称呼它们。
  • 容器提供了完善的方法来保存对象。使用这些工具可以解决数量惊人的问题。
  • 可以把容器当作自动扩充尺寸的数组。

(二)容器的使用

  1. 容器的声明:以ArrayList为例:
    ArrayList < E >
    E为参数类型,可以有多个;
    E指定了这个容器实例可以保存的类型。


    举例(使用了预定义的泛型):
import java.util.ArrayList;

class Apple{
    private static long coungter;
    private final long id = coungter++;
    public long id(){
        return id;
    }
}

public class AppleAndWithGenerics {
    public static void main(String[] args) {
        //声明ArrayList 存放的都是Apple对象
        ArrayList<Apple> apples = new ArrayList<Apple>();
        //使用add()方法向ArrayList中添加对象
        for (int i = 0; i < 3; i++){
            apples.add(new Apple());
        }
        //调用ArrayList中每个对象的id()方法,并打印信息
        //size()方法可以得到有多少个元素被添加进来
        //get(i)方法可以访问对象,可以像数组一样使用索引
        for (int i = 0; i < apples.size();i++){
            System.out.println(apples.get(i).id()
            );
        }

    }
}

在这里插入图片描述
当指定了某个类型作为泛型的参数时,并不仅限于该确切类型的对象放置到容器中。向上转型也可以像作用于其他类型一样作用于泛型。
在以上例1的基础上进行修改:
例2:

package www.fanfan.com;

import java.util.ArrayList;

class Apple{
    private static long coungter;
    private final long id = coungter++;
    public long id(){
        return id;
    }
}
class Gala extends Apple{}
class Fuji extends Apple{}
class Braeburn extends Apple{}

public class AppleAndOrangeWithGenerics {
    public static void main(String[] args) {
        ArrayList<Apple> apples = new ArrayList<Apple>();
        apples.add(new Gala());
        apples.add(new Fuji());
        apples.add(new Braeburn());
        for (Apple c:apples){
            System.out.println(c);
        }
    }
}

在这里插入图片描述

(三)基本概念

容器类类库的用途是“保存对象”,可以划分为两个不同的概念:

  1. Collection:一个独立元素的序列(一种存放一组对象的方式),这些元素都服从一条或多条序列。
    (1)List:必须按照插入的顺序保存元素;
    (2)Set不能有重复元素;
    (3)Queue按照排队规则来确定对象产生的顺序(通常与他们被插入的顺序相同)
  2. Map:一组成对的的“键值对”对象,允许使用键来查找对象。(例如可以使用数字来查找对象,可以使用对象来查找对象,就像使用字典一样。)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值