1
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.*;
//import java.util.Map.Entry;

public class teste{ 
    public static void main(String[] args){

    }
}

我只希望arraylist每个键的最终显示目的是:

键的返回值:[silicone baby dolls for sale, ego ce4, venus, sample,blue]

键的返回值:[apple, banana, key, kill]

4

3 回答 3

5

Keyword和不需要单独的列表Alternate

您需要的是csv 数据Map中的 key和值 a ,其中包含与 a 对应的所有值。KeywordListAlternateKeyword

Map<String, List<String>> alternateMap = new HashMap<>();

请注意,使用该映射中已经存在的键将值放入映射将覆盖先前的值。所以你只需要在第一次找到新的时才放列表Keyword,即尝试为关键字添加替代项时,首先检查地图中是否存在相应的列表,如果不存在则创建一个列表并放入地图中,然后添加Alternate到该列表。

while(...) {
    String keyword = ...;
    String alternate = ...;
    // check whether the list for keyword is present
    List<String> alternateList = alternateMap.get(keyword);
    if(alternateList == null) {
        alternateList = new ArrayList<>();
        alternateMap.put(keyword, alternateList);
    }
    alternateList.add(alternate);
}

// printing the result
for(Map.Entry<String, List<String>> alternateEntry : alternateMap.entrySet()) {
    System.out.println(alternateEntry.getKey() + ": " + 
           alternateEntry.getValue().toString());
}

编辑

运行您的代码后,它似乎工作正常。列表由 返回entry.getValue()。只需将其添加到您的主要方法的末尾:

for(Entry<String, ArrayList<String>> entry : example.items.entrySet()) {
    System.out.println(entry.getKey() + ": " +  entry.getValue().toString());
}

它应该给你你想要的输出

ego kit: [silicone baby dolls for sale, ego ce4, venus, sample, blue]
samsung: [apple, banana, key, kill]

注意:上面的代码没有编译,但应该给你一个提示如何映射你的数据。

于 2013-09-08T18:04:57.863 回答
2
HashMap hm=new HashMap();

ArrayList ln=new ArrayList();

  ln.add("hi");

  ln.add("heloo");

  ln.add(123);

 hm.put("somename", ln);

 ArrayList ls=(ArrayList)hm.get("somename");
于 2013-12-20T08:46:01.817 回答
0

ArrayList<String> values= new ArrayList<>(hashmap.values());

String可以是任何其他对象类型

于 2018-09-28T14:11:48.757 回答