相关疑难解决方法(0)

Java字符串:compareTo()与equals()

String我在Java中测试同等性时,我总是使用它,equals()因为对我来说这似乎是最自然的方法.毕竟,它的名字已经说明了它的目的.然而,我最近告诉我的一位同事被教导用compareTo() == 0而不是equals().这感觉不自然(因为compareTo()它意味着提供一种排序,而不是相等的平等),甚至有点危险(因为compareTo() == 0并不一定意味着在所有情况下都是平等的,即使我知道这对我来说也是如此String).

他不知道为什么他被教导用compareTo()而不是equals()用于String,我也找不到任何理由.这真的是个人品味的问题,还是有任何方法的真正原因?

java string equals compareto

113
推荐指数
9
解决办法
15万
查看次数

具有 Comparable 键的 HashMap 无法按预期工作

我们正面临着 HashMap 行为的奇怪问题。

当 HashMap 键实现 Comparable 接口但 compareTo 实现与 equals 不一致时,则 HashMaps:

  • 变得更大然后他们应该成长
  • 它们包含多个相等元素的实例
  • 附加到这些元素的值可能不同
  • get(key) 结果取决于使用哪个键(即使根据 equals 方法键相等)。

我创建了一个小测试来重现问题(见下文)。

import java.util.HashMap;
import java.util.Map;

public class HashMapTest {
private static final char MIN_NAME = 'A'; 
private static final char MAX_NAME = 'K'; 
private static final int EXPECTED_NUMBER_OF_ELEMENTS = MAX_NAME - MIN_NAME + 1; 

private HashMap<Person, Integer> personToAgeMap; 

HashMapTest(){
    personToAgeMap = new HashMap(); 
}

public static void main(String[] args){
    HashMapTest objHashMap = new HashMapTest();
    System.out.println("Initial Size of Map: " + …
Run Code Online (Sandbox Code Playgroud)

java hashmap

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

标签 统计

java ×2

compareto ×1

equals ×1

hashmap ×1

string ×1