如何初始化和访问集合对象数组

时间:2015-12-10 10:50:27

标签: java arrays collections set

我想创建一个集合数组并为我的程序访问它们。但是,由于数组不能与泛型类型合并,我已将HashSet类包装在另一个类中,如下所示。

Class MyClass{
    private HashSet<Integer> myKeys;
    public boolean add(Integer i) { return myKeys.add(i); }
    public boolean contains(Integer i){ return myKeys.contains(i); }
    public boolean remove(Integer i){ return myKeys.remove(i); }     
}

稍后在我的main()方法中,我输入了以下代码:

public static void main(String []args){
    System.out.println("Hello World");
    MySets[] keys= new MySets[2];

    keys[1].add(1);
    keys[2].add(2);
    keys[1].add(2);
    keys[2].add(4);
    System.out.println("Key 1=" +keys[1]+" Key 2=" +keys[2]);                
}

我无法访问任何可能的对象,因为它们未初始化为HashSet。请提供一个可能的解决方案来访问这些集。

1 个答案:

答案 0 :(得分:0)

数组上的对象为null,因为您没有初始化它们。 你必须先将它们初始化。 您还必须初始化HashSet。 您应该使用Set界面而不是HashSet

您的阵列的索引也存在问题。 Java索引从0开始。

class MySets {
    private Set<Integer> myKeys = new HashSet<Integer>();
    public boolean add(Integer i) { return myKeys.add(i); }
    public boolean contains(Integer i){ return myKeys.contains(i); }
    public boolean remove(Integer i){ return myKeys.remove(i); }     
}

public static void main(String []args){
    System.out.println("Hello World");
    MySets[] keys= new MySets[2];

    keys[0] = new MySets();
    keys[1] = new MySets();

    keys[0].add(1);
    keys[1].add(2);
    keys[0].add(2);
    keys[1].add(4);
    System.out.println("Key 1=" +keys[0]+" Key 2=" +keys[1]);                
}