标签: hashmap

理解HashMap中equals和hashCode的工作原理

我有这个测试代码:

import java.util.*;

class MapEQ {

  public static void main(String[] args) {
   Map<ToDos, String> m = new HashMap<ToDos, String>();
   ToDos t1 = new ToDos("Monday");
   ToDos t2 = new ToDos("Monday");
   ToDos t3 = new ToDos("Tuesday");
   m.put(t1, "doLaundry");
   m.put(t2, "payBills");
   m.put(t3, "cleanAttic");
   System.out.println(m.size());
} }

class ToDos{

  String day;

  ToDos(String d) { day = d; }

  public boolean equals(Object o) {
      return ((ToDos)o).day == this.day;
 }

// public int hashCode() { return 9; }
}
Run Code Online (Sandbox Code Playgroud)

何时// public int hashCode() { return …

java equals hashmap hashcode

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

Java中的HashMap和ArrayList之间的区别?

在Java中,ArrayListHashMap用作集合.但我无法理解我们应该在哪些情况下使用ArrayList以及使用哪些时间HashMap.两者之间的主要区别是什么?

java collections arraylist hashmap

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

ConcurrentHashMap如何在内部工作?

我正在阅读关于Java中的并发的官方Oracle文档,我想知道Collection返回的有什么区别

public static <T> Collection<T> synchronizedCollection(Collection<T> c);
Run Code Online (Sandbox Code Playgroud)

并使用例如a

ConcurrentHashMap.我假设我用synchronizedCollection(Collection<T> c)的是HashMap.我知道一般来说,同步集合本质上只是我的装饰器HashMap所以很明显a ConcurrentHashMap的内部结构有所不同.您是否有关于这些实施细节的信息?

编辑:我意识到源代码是公开的: ConcurrentHashMap.java

java collections concurrency hashmap

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

实现HashMap

如何从头开始在C中创建Hashmap?考虑什么参数以及如何测试hashmap有多好?就像在您说哈希映射完成之前需要运行的基准测试用例一样.

c unit-testing hashmap

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

Java - 获取HashMap中的键索引?

在java中,如果我循环遍历keySet()a HashMap,我如何(在循环内)获取该键的数字索引?

基本上,当我循环遍历地图时,我希望能够得到0,1,2 ...我认为这比声明一个int并且每次迭代递增更清晰.

谢谢.

java iteration hashmap

42
推荐指数
6
解决办法
17万
查看次数

Java HashMap.clear()和remove()内存是否有效?

考虑以下HashMap.clear()代码:

 /**
 * Removes all of the mappings from this map.
 * The map will be empty after this call returns.
 */
public void clear() {
    modCount++;
    Entry[] tab = table;
    for (int i = 0; i < tab.length; i++)
        tab[i] = null;
    size = 0;
}
Run Code Online (Sandbox Code Playgroud)

看来,对象的内部数组(table)Entry永远不会收缩.因此,当我向地图添加10000个元素时,在该调用之后map.clear(),它将在其内部数组中保留10000个空值.所以,我的问题是,JVM如何处理这个数组,因此,HashMap内存是否有效?

java memory hashmap

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

在CoffeeScript中,如何将变量用作哈希中的键?

例如:

WTF

所以:

foo = "asdf"
{foo: "bar"}
eval foo

# how do I get {"asdf": "bar"} ?

# this will throw parse error:
{(eval foo): "bar"}
Run Code Online (Sandbox Code Playgroud)

这是一个简单的语法问题:如何让CoffeeScript动态构造哈希,而不是手工完成?

hashmap literals coffeescript

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

从JSON字符串创建Hashmap

从java中的json字符串创建一个hashmap?

我有像json字符串,{"phonetype":"N95","cat":"WP"}并希望转换为标准的Hashmap.

我该怎么做?

java android json hashmap

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

为什么Sun Java中的HashSet实现使用HashMap作为其后盾?

查看Java 6的源代码,HashSet<E>实际上是使用HashMap<E,Object>在Set的每个条目上使用虚拟对象实例来实现的.

我认为这对于条目本身的大小来说浪费了4个字节(在32位机器上).

但是,为什么它仍在使用?是否有任何理由使用它,除了使代码更容易维护?

java hashmap hashset

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

线程安全的哈希映射?

我正在编写一个将HashMap返回给用户的应用程序.用户将获得对此MAP的引用.在后端,我将运行一些将更新Map的线程.

到目前为止我做了什么?


我已经制作了所有后端线程,因此共享一个公共频道来更新MAP.所以在后端我确信并发写操作不会成为问题.


我遇到的问题


  1. 如果用户尝试更新MAP并同时在后端更新MAP - >并发写操作问题.
  2. 如果使用尝试从MAP读取内容并同时在后端更新MAP - >并发READ和WRITE操作问题.

直到现在我还没有遇到任何这样的问题,但我担心将来我可能会面对.请给出sugesstions.

我在用 ConcurrentHashMap<String, String>.

java multithreading hashmap java.util.concurrent

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