有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使这些简单而美丽?

当我把一个(KEY, VALUE)放进一个像Map<String, List<String>>这样的映射中,我想先检查这个键是否存在,以决定是否需要创建一个新列表时,我的Java代码通常如下所示:

Map<String, List<String>> example = new HashMap<>();
public void put(String k, String v){
    if(example.containsKey(k)){
        example.get(k).add(v);
        return;
    }
    List<String> vs = new ArrayList<>();
    vs.add(v);
    example.put(k,vs);
}

看起来不太好。有没有办法让它更简单、更漂亮


共 (3) 个答案

  1. # 1 楼答案

    如果你有Java 8,你可以把它写成一行:

    example.computeIfAbsent(k, key -> new ArrayList<>()).add(v);
    

    它使用lambda,因此new ArrayList仅在需要时创建

    kkey需要有不同的名称,因为它们是不同的变量)

  2. # 2 楼答案

    Map<String, List<String>> example = new HashMap<>();
    public void put(String k, String v){
        if (!example.containsKey(k)){
            example.put(k, new ArrayList<>();
        }
        example.get(k).add(v);
    }
    

    可以说,这有点浪费——要求你得到你刚刚列出的清单——但在我看来,它更干净、更具表现力

  3. # 3 楼答案

    如果不能使用其他库或java 8,可以将整个映射打包,并在自己的类中构造

    在你自己的课堂上:

    1. 把混乱限制在一个地方

    2. 在幕后隐藏你正在使用地图的脸

    3. 有一个地方可以移动任何附加逻辑