【问题标题】:How to add generic Set to Map (Map<String, Set<String>> map = new TreeMap<>())?如何将通用 Set 添加到 Map (Map<String, Set<String>> map = new TreeMap<>())?
【发布时间】:2021-01-25 07:05:00
【问题描述】:

我想在Map&lt;String, Set&lt;String&gt;&gt; map = new TreeMap&lt;&gt;()987654321@的帮助下制作电话簿

示例:

Anna - 8999
Ira - 8777, 8666
Artur - 5444, 6555

其中name为key(String),电话号码为Set值,如何为每个名字指定电话号码,即每个名字必须有自己的Set Numbers

【问题讨论】:

  • 您到底在哪里遇到问题? map.put("Ira", Set.of(8777, 8666))

标签: java string dictionary generics set


【解决方案1】:

如果您使用 Java 8,那么试试这个:

    Map<String, Set<String>> map = new TreeMap<>();
    map.put("Anna", new HashSet(Arrays.asList(8999)));
    map.put("Ira", new HashSet(Arrays.asList(8777, 8666)));
    map.put("Artur",new HashSet(Arrays.asList(5444, 6555)));

如果您使用 Java 9+,请使用 Set.of。但请注意,使用of 方法创建的这个集合是不可修改的。

例子:

Set.of(8999)

【讨论】:

    【解决方案2】:

    你为什么不简单地尝试一下

    如果你使用Java 9及以上使用

    Map<String, Set<String>> map = new TreeMap<>();
    map.put("Anna", Set.of(8999));
    map.put("Ira", Set.of(8777, 8666));
    map.put("Artur", Set.of(5444, 6555));
    

    如果你使用Java 8试试

    Map<String, Set<Integer>> map = new TreeMap<>();
    map.put("Anna", Stream.of(8999).collect(Collectors.toSet()));
    map.put("Ira", Stream.of(8777, 8666).collect(Collectors.toSet()));
    map.put("Artur", Stream.of(5444, 6555).collect(Collectors.toSet()));
    

    如果您使用的是旧版本的Java,请尝试

    Map<String, Set<String>> map = new TreeMap<>();
    map.put("Anna", new TreeSet(Arrays.asList(8999)));
    map.put("Ira", new TreeSet(Arrays.asList(8777, 8666)));
    map.put("Artur", new TreeSet(Arrays.asList(5444, 6555)));
    

    【讨论】:

    • 但是如果作者使用 jdk 8 或早期的这种构造 (Set.of(5444, 6555)) 将不起作用。这个功能在 jdk 9 中添加
    猜你喜欢
    • 2019-08-26
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    • 2021-04-13
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    相关资源
    最近更新 更多