对象容器(上)

@spiritree  August 11, 2016

容器是现代程序设计非常基础而重要的手段。

所谓容器,就是“放东西的东西”。数组可以看作是一种容器,但是数组的元素个数一旦确定就无法改变,这在实际使用中是很大的不足。一般意义上的容器,是指具有自动增长容量能力的存放数据的一种数据结构。在面向对象语言中,这种数据结构本身表达为一个对象。所以才有“放东西的东西”的说法。

当数组的元素的类型是类的时候,数组的每一个元素其实只是对象的管理者而不是对象本身。因此,仅仅创建数组并没有创建其中的每一个对象!

HashSet集合就是数学中的集合的概念:所有的元素都具有唯一的值,元素在其中没有顺序。

  • 这是一个笔记本小程序

class Value{
    private int i;
    public void set(int i) { this.i = i; }
    public int get(int i){ return i; }
    public String toString() { return ""+i; }//直接输出对象的方法
}

设置和获取值的类

public class Notebook {
    private ArrayList<String> notes = new ArrayList<String>();

    public void add(String s) {
        notes.add(s);
    }

    public void add(String s, int location) {
        notes.add(location, s);
    }

    public int getSize() {
        return notes.size();
    }

    public String getNote(int index) {
        return notes.get(index);
    }

    public void removeNote(int index) {
        notes.remove(index);
    }

    public String[] list() {
        String[] a = new String[notes.size()];
        notes.toArray(a);
        return a;
    }
    public static void main(String[] args) {
        Value c = new Value();
        c.set(10);
        System.out.println(c);
        ArrayList<String> a = new ArrayList<String>();//容器类可用foreach循环
        a.add("first");
        a.add("second");
        a.add("first");
        System.out.println(a);//容器可直接输出
//        for ( String s : a) {
//            System.out.println(s);
//        }
        HashSet<String> b = new HashSet<String>();//数学中的集合概念
        b.add("first");
        b.add("second");
        b.add("first");
        System.out.println(b);

结果为:
10
[first, second, first]
[first, second]


添加新评论