java - 在 Java 中将两个值添加到 HashMap 中的键

标签 java hashmap key

我使用的文件包含以下内容:

“单词”,“wordtype”,“定义”

"Base","n.","长袍或衬裙的下半部分。"

“基地”,“n。”,“围裙。”

输出如下:

键:“base”值:[“word”“wordtype”“定义”,“Base”“n。”“长袍或衬裙的下半部分。”,“Base”“n。” “围裙。”] key: "word"value: ["word""wordtype""definition", "Base""n.""长袍或衬裙的下半部分。", "Base""n.""围裙。"]

期望的结果:

键:“base”值:[“Base”“n。”“长袍或衬裙的下半部分。”,“Base”“n。”“围裙。”] 键:“word”值:[“word”“wordtype”“定义”]

有人能指出我正确的方向吗?

BufferedReader br = new BufferedReader( new InputStreamReader(new FileInputStream(file)));

    String line = null;

    TreeMap<String, List<String>> def = new TreeMap<String, List<String>>();
    List<String> values = new ArrayList<String>();

        try {
            while ((line = br.readLine()) != null) {
                String []parts =line.split(",");
                String key = null;
                for (int i = 0; i < parts.length; i++){
                    key = parts[0];
                }

                values.add(parts[0] + parts[1] + parts[2]);
                def.put(key.toLowerCase(), values);

            }

最佳答案

一个Map无法按您的要求工作。任意key只能映射到单个value .

如果您想要类似于您正在做的事情,但您可以拥有多个 values对于给定的key ,你可以这样做:

List<Map.Entry<String, List<String>>> def = new ArrayList<>();

Map.Entry<String, List<String>> entry = new AbstractMap.SimpleEntry<>(key, list);
def.add(entry);

然后迭代你的 def :

for (Map.Entry<String, List<String>> entry : def) {
    System.out.println(String.format("Key: %s.  Values: %s",
            entry.getKey(),
            Arrays.toString(entry.getValue().toArray())));
}

编辑:

对于您的评论:如果您愿意,您可以随时将自己的类型存储在Map中(或者 List 如果您仍然需要重复的 key ):

class WordDescription {
    final String wordType;
    final String definition;

    WordDescription(String wordType, String definition) {
        this.wordType = wordType;
        definition = definition;
    }

    String getWordType() {
        return wordType;
    }

    String getDefinition() {
        return definition;
    }
}

并在 List<Map.Entry<String, WordDescription>> 中使用它。您可以制作wordType一个enum是否存在一组预定义的内容(形容词、名词等)。

关于java - 在 Java 中将两个值添加到 HashMap 中的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36380441/

相关文章:

JSSE 中的 Java SSL 预共享 key 模式

java - Java中大查找值的高效实现

json - Node.js中如何从json中分别获取key和value

java - Exif 数据读 写

javascript - InDesign 中的文本转脚注

java - 使用 hashmap 进行问答程序?

java - 使用 Hashmap 进行字符串分组

key - couchdb 中两个关键范围的问题

c# - 在 C# 中将字符串转换为键

java - WebLogic启动时设置环境变量的最佳方式