将hashmap中的列表转换为2d数组



所以我有一个hashmap定义为:hashmap<String,LinkedList<node>>。节点类包含两个字段a和b。

我有一些字符串值,我需要的信息。我想做的是遍历hashmap并查找与我所拥有的每个值相关的Linkedlists,并将字段'a'的列表获取到2d数组中。

所以字符串值"animal"的所有'a'字段都是2d数组中的第一个数组。字符串值"humans"的所有'a'字段都在第二个数组中,以此类推。

我知道这有点乱,但我希望你能明白。

你应该考虑使用List of List而不是2D Array,因为我确信行和列将非常,你可能不知道每个的初始大小。

我做了一些假设,因为你没有说明。您可以根据需要进行修改,以适应您的特定场景。参见下面的假设。

假设

  1. 您关心的"字符串",即"动物"、"人"是你的hashMap的钥匙。
  2. Nodea字段为String类型
  3. 你有一个列表为所有你关心的字符串
实施

public static void main(String[] args) throws URISyntaxException, IOException {
    Map<String, LinkedList<Node>> hashMap = new HashMap<String, LinkedList<Node>>();
    List<List<String>> multiDemList = new ArrayList<List<String>>(); //Once the method is done this will contain your 2D list
    List<String> needInfoOn = new ArrayList<String>(); //This should contain all of the HashMap Keys you are interested in i.e. Animal, Human keys
    for(String s: needInfoOn){
        if(!hashMap.containsKey(s)) continue; //if the map doesnt contain this string then skip to the next so we dont add empty rows in our multidimensional array. remove this line if you want empty rows
        List<String> list = BuildTypeAList(hashMap, s);
        multiDemList.add(list);
    }
}
private static List<String> BuildTypeAList(Map<String, LinkedList<Node>> map, String s) {
    LinkedList<Node> linkedList = map.get(s);
    ArrayList<String> arrList = new ArrayList<String>();
    for(Node n: linkedList) {
        arrList.add(n.a);
    }
    return arrList;
}
private static class Node {
    String a;
    String b;
}

相关内容

  • 没有找到相关文章

最新更新