草庐IT

HashMap和Hashtable的区别

全部标签

java - 多线程环境下的 HashMap 和哈希表

我真的很困惑这两个集合在多线程环境中的表现。哈希表是同步的,这意味着不会有2个线程同时更新它的值,对吧? 最佳答案 看ConcurrentHashMaps表示线程安全映射。它们提供了HashTable的所有功能,并且性能非常接近HashMap。性能是通过使用map范围锁而不是使用mapwidelock获得的,默认情况下该集合维护一个包含16个锁的列表,每个锁用于锁定map的一个bucket。您甚至可以配置桶的数量:)根据您的数据调整此项可以帮助提高性能。BrianGoetz的《Java并发实践》我怎么推荐都不为过http://jci

java - ArrayList.contains() 对比 HashMap.containsKey() 对比 HashMap.get()

ArrayList.contains()是否必须遍历所有项目才能进行检查?HashMap.containsKey()吗?我知道HashMap.get()不需要,但这就是它最有效的原因吗? 最佳答案 嗯嗯ArrayList.contains()迭代?/***Returnstrueifthislistcontainsthespecifiedelement.*Moreformally,returnstrueifandonlyifthislistcontains*atleastoneelementesuchthat*(o==null&nbs

java - 如何使用键降序对 HashMap 进行排序

如何使用键降序对HashMap进行排序。请举例说明。以及有多少种方法可以对HashMap进行排序。请详细说明 最佳答案 HashMap不支持排序。他们将条目存储在桶中,他们认为它如何适合,只是基于键的hashCode值。它们适用于存储东西并在事后查找它们,但不适合迭代它们的内容(这显然是您想要做的),因为您不能依赖它们的顺序并且迭代它通常很昂贵。尝试使用TreeMap代替。您可以指定一个自定义比较器,它与默认比较器正好相反。在这种情况下,您的条目将按降序顺序排列。Collections.reverseOrder将为您创建这样一个比较

java - 当负载因子大于 1 时,如何填充 java 中的 hashMap?

我尝试创建一个包含以下详细信息的HashMap:-HashMaptest=newHashMap();test.put(1,"Value1");test.put(2,"Value2");test.put(3,"Value3");test.put(4,"Value4");test.put(5,"Value5");test.put(6,"Value6");test.put(7,"Value7");test.put(8,"Value8");test.put(9,"Value9");test.put(10,"Value10");test.put(11,"Value11");test.put(12

java - 隐式和显式 ArrayList 大小声明之间的区别?

以下声明之间有什么区别:Listlist1=newArrayList();Listlist2=newArrayList(10);默认是分配10,但是有什么区别吗?我可以通过list2.add("something")向list2添加第11个元素吗? 最佳答案 这是sourcecode给你举个例子publicArrayList(){this(10);}所以没有区别。由于初始容量为10,无论您是否传递10,它都会以容量10进行初始化。CanIadd11thelementinthelist2bylist2.add("something")

java - Collectors.toConcurrentMap 和通过 Collectors.toMap 供应商选项将 Map 转换为 ConcurrentHashMap 之间有什么区别?

我想通过Java8Stream和Collector接口(interface)将Map转换为ConcurrentHashMap,然后是我可以使用的两个选项。第一个:Mapmb=persons.stream().collect(Collectors.toMap(p->p.age,p->p.name,(name1,name2)->name1+";"+name2,ConcurrentHashMap::new));第二个:Mapmb1=persons.stream().collect(Collectors.toConcurrentMap(p->p.age,p->p.name));哪个是更好的选择

java - 使用一个 HashMap 作为另一个 HashMap 的键

我有一个要求,我需要用一组值映射一组配置,理想情况下用Map,Map>表示结构。主map的配置和值部分都是任意的,因此我无法使用具体类。请对此结构提供一些反馈。一个Map可以用作另一个Map的键吗?通过一些研究,我能够确定Map的equals方法利用所有底层键和值将两个Map视为相等。此外,map的哈希码基于map键的哈希码。此IMO应满足使用Map作为key的最低要求。在我继续实现之前,我仍然希望有人对此进行验证。如果有人可以建议更好的解决方案/设计,请随时提出。编辑我最终使用简单的波浪号('~')和竖线('|')分隔字符串作为键,并在需要时解构它。感谢所有提供帮助的人。

java - 谁在把元素放入HashMap时调用了类的equals方法?

我是Java的新手(非常新)。我试图了解HashMap和类的equals方法以及它如何覆盖重复项。请看下面的代码:publicclassStudent{IntegerStudentId;StringName;StringCity;publicStudent(IntegerstudentId,Stringname,Stringcity){super();StudentId=studentId;Name=name;City=city;}publicIntegergetStudentId(){returnStudentId;}publicStringgetName(){returnName;

java - JVM 规范、JVM 实现、JVM 运行时之间有什么区别

我读了下面的话,但我想知道它们之间的区别......JVM规范、JVM实现、JVM运行时 最佳答案 JVM规范:描述JVM应如何运行的文档。JVM实现:基于JVM规范的JVM实现。JVM运行时:JVM实现的一个实例。 关于java-JVM规范、JVM实现、JVM运行时之间有什么区别,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2097189/

java - 按引用传递和按引用调用有什么区别?

java中按引用传递和按引用调用有什么区别? 最佳答案 Java不通过引用传递任何变量。在Java中很容易想到对象是通过引用传递的——但这是有害的。对象类型的变量是引用。传递时,它们按值传递。在其他语言中,按引用传递和按引用调用是一回事。编辑:现有的stackoverflow问题"IsJavapassbyreference?"中提供了更多详细信息(剧透:没有。) 关于java-按引用传递和按引用调用有什么区别?,我们在StackOverflow上找到一个类似的问题: