标签: hashmap

Hashtable和Collections.synchronizedMap(HashMap)之间的区别

据我所知,java.util.Hashtable同步java.util.Map接口中的每个方法,同时Collections.synchronizedMap(hash_map)返回一个包装器对象,其中包含将调用委托给实际的同步方法hash_map(如果我错了,请纠正我).

我有两个问题:

  1. 它与同步每个方法和包装类有什么区别?有哪些方案可以选择其中一种?

  2. 我们这样做会发生什么Collections.synchronizedMap(hash_table)?这是否等于简单地使用正常java.util.Hashtable

java collections synchronization hashtable hashmap

46
推荐指数
2
解决办法
2万
查看次数

Java中的HashMap实现.桶指数计算如何工作?

我正在研究HashMapJava 中的实现,并且一度陷入困境.功能
是如何indexFor计算的?

static int indexFor(int h, int length) {
   return h & (length-1);
}
Run Code Online (Sandbox Code Playgroud)

谢谢

java hashmap

46
推荐指数
2
解决办法
2万
查看次数

Python字典键."在"复杂性

快速提问主要是为了满足我对这个话题的好奇心.

我正在编写一些带有SQlite数据库后端的大型python程序,将来会处理大量的记录,所以我需要尽可能地进行优化.

对于一些函数,我在字典中搜索键.我一直在使用"in"关键字进行原型设计,并计划稍后返回并优化这些搜索,因为我知道"in"关键字通常是O(n)(因为这只是转换为python迭代整个列表并进行比较每个元素).但是,由于python dict基本上只是一个哈希映射,python解释器是否足够智能解释:

if(key in dict.keys()):
    ...code...
Run Code Online (Sandbox Code Playgroud)

至:

if(dict[key] != None):
    ...code...
Run Code Online (Sandbox Code Playgroud)

它基本上是相同的操作,但顶部是O(n),底部是O(1).

我很容易在我的代码中使用底部版本,但后来我只是好奇并且想我会问.

python complexity-theory big-o dictionary hashmap

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

hash_map和unordered_map之间的区别?

我最近发现将调用C++中哈希映射的实现unordered_map.

当我抬起头,为什么他们不只是使用hash_map,我发现,显然有与实施的兼容性问题hash_mapunordered_map可以解决(更多关于它在这里).

该wiki页面没有提供更多信息,所以我想知道是否有人知道hash_mapunordered_map解决方案的一些问题.

c++ stl unordered-map hashmap

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

高性能Haskell散列结构.

我正在编写有很多表查找的程序.因此,我仔细阅读Haskell的文档时,我偶然发现了Data.Map(当然),但也Data.HashMapData.Hashtable.我不是哈希算法的专家,在检查包之后,它们看起来都非常相似.因此我想知道:

1:如果有什么主要差异?

2:在大约4000个键值对的地图/表上进行大量查找,哪个性能最高?

haskell hashtable hashmap

45
推荐指数
2
解决办法
1万
查看次数

Hashmap将不同的数据类型保存为Integer,String和Object的值

我需要使用key作为整数创建一个hashmap,它应该包含不同数据类型的多个值.例如,如果键是msg id且值是

  1. 类型字符串的消息
  2. 类型时间的时间戳
  3. 整数类型的计数
  4. 整数类型的版本

那么如何使用单个键将不同数据类型的值存储到hashmap中?

java types hashmap

45
推荐指数
4
解决办法
9万
查看次数

从基于JSTL的键的hashmap获取值

我想获得HashMap基于密钥的价值.

HashMap<String, ArrayList<String>> map 
    = new HashMap<String, ArrayList<String>>();
ArrayList<String> arrayList = new ArrayList<String>();

map.put("key", arrayList);
request.setAttribute("key", map);
Run Code Online (Sandbox Code Playgroud)

我做的是

<c:forEach var="map" items="${requestScope.key}">
    <c:forEach var="hash" items="${map.value}">
        <option><c:out value="${hash}"/></option>
    </c:forEach>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

但似乎它正在打印所有内容,我想要做的是获取价值取决于关键像:hash.key或者其他什么

更新:
我做了类似的事情,但它仍然无法正常工作

<c:forEach var="map" items="${requestScope.key}">
    <c:forEach var="hash" items="${map['key']}">
        <option><c:out value="${hash}"/></option>
    </c:forEach>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

和StackTrace:Property 'External' not found on type java.util.HashMap$Entry
我很确定真的有这样的关键.

java jsp jstl hashmap

44
推荐指数
1
解决办法
11万
查看次数

在微调器中设置键和值

我有一个spiner,我想设置一个键和一个值,我使用HashMap,这是工作,但显示一行,如下所示:

在此输入图像描述

码:

        final View rootView = inflater.inflate(R.layout.fragment_photos, container, false);

    Spinner spin=(Spinner)rootView.findViewById(R.id.spinner1);

    HashMap<Integer, String> P_Hash=new HashMap<Integer, String>();

    Update Get_Information=new Update(rootView.getContext());

    ArrayList<String> Province_NAME=new ArrayList<String>();
    Province_NAME=Get_Information.GET_Province();

    ArrayList<Integer> Province_ID=new ArrayList<Integer>();
    Province_ID=Get_Information.Get_Province_ID();

    for (int i = 0; i < Province_ID.size(); i++)
    {
        P_Hash.put(Province_ID.get(i), Province_NAME.get(i));
        Log.d("Province_ID.get(i)", Province_ID.get(i)+"");
        Log.d(" Province_NAME.get(i)",  Province_NAME.get(i)+"");
    }


    ArrayAdapter<HashMap<Integer, String>> adapter = new ArrayAdapter<HashMap<Integer,String>>(rootView.getContext(), android.R.layout.simple_spinner_item);
    adapter.add(P_Hash);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    spin.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)

android hashmap spinner

44
推荐指数
2
解决办法
7万
查看次数

更新可变HashMap中的值

这是我想要做的:

use std::collections::HashMap;

fn main() {
    let mut my_map = HashMap::new();
    my_map.insert("a", 1);
    my_map.insert("b", 3);

    my_map["a"] += 10;
    // I expect my_map becomes {"b": 3, "a": 11}
}
Run Code Online (Sandbox Code Playgroud)

引发以下错误:

error[E0594]: cannot assign to immutable indexed content
 --> src/main.rs:8:5
  |
8 |     my_map["a"] += 10;
  |     ^^^^^^^^^^^^^^^^^ cannot borrow as mutable
  |
  = help: trait `IndexMut` is required to modify indexed content, but it is not implemented for `std::collections::HashMap<&str, i32>`
Run Code Online (Sandbox Code Playgroud)

我真的不明白这意味着什么,因为我做了HashMap可变的.当我尝试更新a中的元素时vector,我得到了预期的结果:

error[E0594]: cannot assign to data in …
Run Code Online (Sandbox Code Playgroud)

hashmap rust

44
推荐指数
4
解决办法
1万
查看次数

为什么创建HashMap比创建Object []更快?

我已经尝试构建自己的Map以提高特殊环境的性能,并且我意识到一些非常有趣的事情:创建一个new Hashmap<Integer,String>(2000)比它更快new Object[2000]- 无论我执行这些命令的顺序如何.这对我来说非常困惑,尤其是 因为Hashmap构造函数包含一个table = new Entry[capacity],根据这个.我的测试平台有问题吗?

public static void test(int amm){ //amm=1_000_000
    Map<Integer,String> m1 = null;
    Object[] arr = null;

    long time = System.nanoTime();
    for(int i = 0; i < amm; i++){
        m1 = new HashMap<Integer, String>(2000);
    }
    System.out.println("m1: " + (System.nanoTime() - time)); //m1: 70_455_065

    time = System.nanoTime();
    for(int i = 0; i < amm; i++){
        arr = new Object[2000];
    }
    System.out.println("arr: " + (System.nanoTime() - time)); //arr: 1_322_473_803 …
Run Code Online (Sandbox Code Playgroud)

java arrays performance hashmap

44
推荐指数
2
解决办法
2674
查看次数