Java 添加到HashMap中的linkedList<;字符串,链接列表>;

Java 添加到HashMap中的linkedList<;字符串,链接列表>;,java,linked-list,hashmap,Java,Linked List,Hashmap,我想添加到hashmap中的linkedlist。 前任 约翰:-->杰克-->布莱克-->裂纹 苏珊:莎莉,萨米,傻瓜 ect 我不太清楚怎么做。我是否需要为每个名称创建一个新的linkedList?如果需要,如何动态创建一个。下面是我制作的一些示例代码 import java.util.*; import java.io.*; public class test { public static void main(String args[]) throws FileNotFoundE

我想添加到hashmap中的linkedlist。 前任 约翰:-->杰克-->布莱克-->裂纹 苏珊:莎莉,萨米,傻瓜 ect

我不太清楚怎么做。我是否需要为每个名称创建一个新的linkedList?如果需要,如何动态创建一个。下面是我制作的一些示例代码

import java.util.*;
import java.io.*;
public class test {
    public static void main(String args[]) throws FileNotFoundException{
        HashMap<String, LinkedList<String>> testMap =  new HashMap<String, LinkedList<String>>();
        File testFile = new File("testFile.txt");
        Scanner enterFile = new Scanner(testFile);
        String nextline = "";
        LinkedList<String> numberList = new LinkedList<String>();
        int x = 0;
        while(enterFile.hasNextLine()){
            nextline = enterFile.nextLine();
            testMap.put(nextline.substring(0,1),numberList);
            for(int i = 1; i < nextline.length() - 1; i++){
                System.out.println(nextline);
                testMap.put(nextline.substring(0,1),testMap.add(nextline.substring(i,i+1)));
            }
            x++;
        }
        LinkedList<String> printHashList = new LinkedList<String>();
        printHashList = testMap.get(1);
        if(printHashList.peek() != "p"){
            System.out.println(printHashList.peek());
        }
    }
}
import java.util.*;
导入java.io.*;
公开课考试{
公共静态void main(字符串args[])引发FileNotFoundException{
HashMap testMap=新的HashMap();
File testFile=新文件(“testFile.txt”);
扫描仪enterFile=新扫描仪(testFile);
字符串nextline=“”;
LinkedList numberList=新建LinkedList();
int x=0;
while(enterFile.hasNextLine()){
nextline=enterFile.nextline();
testMap.put(nextline.substring(0,1),numberList);
对于(int i=1;i
sry如果这不是一篇好文章,这是我的第一篇

public void putToMap(字符串名称){
public void putToMap(String name) {
    String firstLetter = name.substring(0, 1);

    List<String> names = testMap.get(firstLetter);
    if (names == null) {
        names = new LinkedList<String> ();
        testMap.put(firstLetter, names);
    }

    names.add(name);
}
String firstLetter=name.substring(0,1); 列表名称=testMap.get(第一个字母); 如果(名称==null){ 名称=新的LinkedList(); testMap.put(第一个字母,名称); } 名称。添加(名称); }
Alex的答案是解决您问题的常见(也是最轻量级)解决方案,您应该选择它作为您的答案(如果他根据我的评论修改了答案),但只是想让您知道另一个解决方案是使用LinkedListMultiMap(这是Guava库中的一个类)

LinkedListMultiMap是一种处理列表映射的简单方法(但会带来Guava库的额外库开销)。您可以为每个键分别添加多个值,我相信这是您想要的行为


这是一篇比我见过的许多文章都要好得多的第一篇文章,保持良好的workRight算法,但是方法应该是静态的,并且应该将testMap作为参数传递(如果从主方法访问)。是的。我只是不在乎……:)番石榴是一个非常丰富的库,只包含这一个特性。我用这种方法我记得谷歌地图曾经很流行。不确定现在是否仍在使用,因为我强烈倾向于选择简单的解决方案,除非写出来的成本不合理……我只是提供另一个解决方案供参考。就个人而言,我会选择你的解决方案。