【问题标题】:Adding to a linkedList in a HashMap<String, LinkedList>添加到 HashMap<String, LinkedList> 中的linkedList
【发布时间】:2014-10-21 03:56:57
【问题描述】:

我想添加到哈希图中的链表。 前任 约翰:--> 杰克--> 黑色--> 裂纹 苏珊:--> 萨莉,萨米,傻 等等

我不太确定该怎么做。我是否需要为每个名称创建一个新的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());
        }
    }
}

对不起,如果这不是一个好帖子,这是我的第一个

【问题讨论】:

  • 第一篇文章比我见过的好多了,继续努力

标签: java linked-list hashmap


【解决方案1】:
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);
}

【讨论】:

  • 正确的算法,但方法应该是静态的,并且应该将 testMap 作为参数传递(如果从 main 方法访问)。
  • 是的。我只是不在乎...... :)
  • Guava 是一个非常胖的库,仅包含这一功能。我用这个方法
【解决方案2】:

Alex 的答案是解决您的问题的常见(也是最轻量级)的解决方案,并且您应该选择一个作为您的答案(如果他根据我的评论对其进行了修改),但只是想让您知道另一种解决方案是使用 LinkedListMultiMap(它是 Guava 库中的一个类)。

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

【讨论】:

  • 我记得 Google Multimap 曾经很流行。不知道现在是否还在使用,因为我倾向于选择简单的解决方案,除非编写它的成本不合理......
  • 我只是提供另一种解决方案以供参考。就个人而言,我会选择你的解决方案。
猜你喜欢
  • 2014-03-30
  • 2015-04-09
  • 2010-11-08
  • 2017-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多