创建单个列表的列表以在HashMap中使用

时间:2014-05-10 16:10:30

标签: java list arraylist hashmap

我尝试实现像HashMap<String,MyBigList>

这样的散列图

但是我不能形成我的MyBigList。以下是我正在尝试创建的确切HashMap。

{word=[ [1, [0, 2] ], [ 2, [2]] ], word2=[ [ 1, [1] ] ]}

我想要一个大单列表,如下面的

[ [single list], [single list], .. ]

以及包含int和int列表的单个列表

[single list] = [1, [0,2]]

我尝试在ArrayList内的ArrayList中使用ArrayList,但它不起作用。 我甚至尝试创建一个新成员,其成员为intArrayList<Integer> 但它也没有用。

import java.util.ArrayList;
import java.util.HashMap;

public class NewClass {
    int id;
    ArrayList<Integer> posList;

    public NewClass(){

        this.id = 0;
        this.posList = new ArrayList<Integer>();
    }

    public NewClass(int _id, int a, int b){
        id = _id;
        this.posList = new ArrayList<Integer>();
        posList.add(a);
        posList.add(b);
    }

    public String toString(){
        return "" + this.id + " " + this.posList;
    }
    public static void main(String[] args) {

        NewClass n = new NewClass(1,2,3);
        HashMap<String,ArrayList<ArrayList<NewClass>>> map = new HashMap<String,ArrayList<ArrayList<NewClass>>>();
        ArrayList<ArrayList<NewClass>> bigList = new ArrayList<ArrayList<NewClass>>();
        ArrayList<NewClass> nList = new ArrayList<NewClass>();
        nList.add(n);
        nList.add(n);
        bigList.add(nList);
        map.put("word", bigList);

        System.out.println(map);
    }
}

产生

  

{word = [[1 [2,3],1 [2,3]]}}

1 个答案:

答案 0 :(得分:1)

所以在子列表周围没有类型安全的Map<String, List<Object>>(看到你有整数和列表)?

听起来过于复杂,说得太过分了。它们没有集合,因此您可以为所有数据嵌套它们,如果您真的想要使数据更容易,使用类来表示它,并使用某个方面作为关键字将该类存储在Map中到达它:

public class MyClass {

    private final String word;

    public MyClass(String word) {
        this.word = word;
    }

    // Other Data needed

    public String getWord() { return this.word; }

}

//In another class
Map<String, MyClass> words = new HashMap<>();