标签: map

使用map.get()时使用java Map.containsKey()是多余的

我一直想知道在最佳实践中是否允许不使用该containsKey()方法java.util.Map,而是对结果进行空检查get().

我的理由是,对值进行两次查找似乎是多余的 - 首先是for containsKey(),然后是for get().

另一方面,可能是大多数标准实现的Map高速缓存是最后一次查找,或者编译器可以以其他方式取消冗余,并且为了代码的可读性,优选维护该containsKey()部分.

我非常感谢你的评论.

java performance map code-readability

85
推荐指数
5
解决办法
5万
查看次数

如何在Scala中将immutable.Map转换为mutable.Map?

如何在Scala中将immutable.Map转换为mutable.Map,以便更新Map中的值?

scala map scala-2.8

84
推荐指数
3
解决办法
4万
查看次数

运行时错误:分配给nil映射中的条目

我试图生成一个地图,然后将其转换为yaml文件,如下所示:

uid :
      kasi:
        cn: Chaithra
        street: fkmp
      nandan:
        cn: Chaithra
        street: fkmp
      remya:
        cn: Chaithra
        street: fkmp
Run Code Online (Sandbox Code Playgroud)

我认为在创建地图时我遗漏了一些重要的东西.我的代码如下.

package main

import (
    "fmt"
    "gopkg.in/yaml.v2"
)

type T struct {
    cn     string
    street string
}

func main() {
    names := []string{"kasi", "remya", "nandan"}

    m := make(map[string]map[string]T, len(names))
    for _, name := range names {

        //t := T{cn: "Chaithra", street: "fkmp"}

        m["uid"][name] = T{cn: "Chaithra", street: "fkmp"}

    }
    fmt.Println(m)

    y, _ := yaml.Marshal(&m)

    fmt.Println(string(y))
    //fmt.Println(m, names)
}
Run Code Online (Sandbox Code Playgroud)

它给出以下错误:

panic: runtime error: …
Run Code Online (Sandbox Code Playgroud)

yaml map go

84
推荐指数
4
解决办法
8万
查看次数

使用gdb检查标准容器(std :: map)内容

假设有这样的事情:

#include <map>
int main(){
    std::map<int,int> m;
    m[1] = 2;
    m[2] = 4;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我希望能够从gdb检查运行该程序的地图的内容.
如果我尝试使用下标运算符,我得到:

(gdb) p m[1]
Attempt to take address of value not located in memory.
Run Code Online (Sandbox Code Playgroud)

使用find方法不会产生更好的结果:

(gdb) p m.find(1)
Cannot evaluate function -- may be inlined
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这个目标?

c++ gdb stl map

83
推荐指数
5
解决办法
8万
查看次数

对flatMap/Map转换的理解感到困惑

我似乎真的不了解Map和FlatMap.我无法理解的是for-comprehension是如何嵌套调用map和flatMap的.以下示例来自Scala中的Functional Programming

def bothMatch(pat:String,pat2:String,s:String):Option[Boolean] = for {
            f <- mkMatcher(pat)
            g <- mkMatcher(pat2)
 } yield f(s) && g(s)
Run Code Online (Sandbox Code Playgroud)

翻译成

def bothMatch(pat:String,pat2:String,s:String):Option[Boolean] = 
         mkMatcher(pat) flatMap (f => 
         mkMatcher(pat2) map (g => f(s) && g(s)))
Run Code Online (Sandbox Code Playgroud)

mkMatcher方法定义如下:

  def mkMatcher(pat:String):Option[String => Boolean] = 
             pattern(pat) map (p => (s:String) => p.matcher(s).matches)
Run Code Online (Sandbox Code Playgroud)

模式方法如下:

import java.util.regex._

def pattern(s:String):Option[Pattern] = 
  try {
        Some(Pattern.compile(s))
   }catch{
       case e: PatternSyntaxException => None
   }
Run Code Online (Sandbox Code Playgroud)

如果有人能够阐明在这里使用map和flatMap背后的理由,那将会很棒.

monads scala map for-comprehension

82
推荐指数
3
解决办法
3万
查看次数

如何在使用find方法后更新std :: map?

如何std::map在使用该find方法后更新密钥的值?

我有这样的map和iterator声明:

map <char, int> m1;
map <char, int>::iterator m1_it;
typedef pair <char, int> count_pair;
Run Code Online (Sandbox Code Playgroud)

我正在使用地图来存储角色的出现次数.

我正在使用Visual C++ 2010.

c++ stl stdmap map

80
推荐指数
3
解决办法
12万
查看次数


如何将Java的hashMap内容全部放在另一个,但不能替换现有的键和值?

我需要将所有键和值从一个HashMap复制到另一个B,但不要替换现有的键和值.

什么是最好的方法呢?

我正在考虑迭代keySet和checkig是否存在,我愿意

Map temp = new HashMap(); // generic later
temp.putAll(Amap);
A.clear();
A.putAll(Bmap);
A.putAll(temp);
Run Code Online (Sandbox Code Playgroud)

java hashmap map

79
推荐指数
5
解决办法
16万
查看次数

Java中的双向映射?

我在Java中有一个简单的整数到字符串映射,但我需要能够轻松地从整数中检索字符串,并且还能从字符串中检索整数.我已经尝试了Map,但它只能从整数中检索字符串,这是一种方式:

private static final Map<Integer, String> myMap = new HashMap<Integer, String>();
// This works one way:
String myString = myMap.get(myInteger);

// I would need something like:
Integer myInteger = myMap.getKey(myString);
Run Code Online (Sandbox Code Playgroud)

有没有正确的方法来实现这两个方向?

另一个问题是我只有一些不会改变的常数值(1->"low", 2->"mid", 3->"high"因此,找一个复杂的解决方案是不值得的.

java map apache-commons guava

79
推荐指数
6
解决办法
8万
查看次数

如何在Google地图中查找当前缩放级别?

加载或点击Google地图时如何找到当前的缩放级别?

map google-maps-api-3

78
推荐指数
3
解决办法
8万
查看次数