【问题标题】:how to get key and how to add more values? [duplicate]如何获取密钥以及如何添加更多值? [复制]
【发布时间】:2019-05-23 17:38:06
【问题描述】:
public static void main(String[] args) {
// write your code here
    LinkedHashMap<String,String>category1=new LinkedHashMap();

    category1.put("action","die hard");
    Scanner s=new Scanner(System.in);
    String answer=s.nextLine();
    if (category1.containsKey(answer))
        System.out.println(category1.get("action"));
    if (category1.containsValue(answer))
        System.out.println(category1.keySet());

当用户回答特定值时如何获取key,以及如何为一个key添加更多值?

【问题讨论】:

  • “当用户以特定值回答时如何获取密钥”和“当用户以特定值回答时如何获取密钥”是两个独立的问题。请ask one question per post.
  • 无论如何,您似乎需要两张地图:(1) category -&gt; [collection,of,movies] (2) movie-&gt;category

标签: java hashmap key


【解决方案1】:

1.地图集合,支持同一键下的多个值,它将覆盖之前存储的任何内容。

2. 但是,您可以将其从&lt;String,String&gt; 更改为&lt;String,List&lt;String&gt;&gt;,从而获得将来自客户端的答案累积到列表中的能力。键将引用一个对象,即字符串列表,但列表本身可以包含许多值。

3.为了向列表中添加更多字符串,您需要通过所需键检索列表,然后将新字符串添加到其中。

下面是一些实现这个想法的代码:

private void test(){
        Map<String, List<String>> categories = new HashMap<>();
        String answerFromClient = "Some text";
        List<String> actionAnswers = categories.get("action");
        if (actionAnswers == null){
            actionAnswers = new ArrayList<>();
            actionAnswers.add(answerFromClient);
            categories.put("action",actionAnswers);
        }
        else{
            actionAnswers.add(answerFromClient);
        }
    }

【讨论】:

  • 你真的试过了吗?我不认为简单地将第二个类型参数更改为List&lt;String&gt; 会神奇地使其接受多个字符串而不更改代码。
  • 当然您需要更改代码以支持字符串列表,但我只是给出一个大致的想法。
  • 那么应该在答案中说明。仅仅改变参数是不够的。
  • 我编辑了答案,并提供了一个例子。
猜你喜欢
  • 1970-01-01
  • 2014-01-22
  • 2018-11-29
  • 1970-01-01
  • 2021-07-26
  • 2020-02-29
  • 1970-01-01
  • 2021-03-31
  • 1970-01-01
相关资源
最近更新 更多