相关疑难解决方法(0)

比较与equals一致意味着什么?如果我的班级不遵循这个原则,可能会发生什么?

从TreeMap的JavaDoc:

请注意,如果此有序映射要正确实现Map接口,则由有序映射维护的排序(无论是否提供显式比较器)必须与equals一致.(请参阅Comparable或Comparator以获得与equals一致的精确定义.)这是因为Map接口是根据equals操作定义的,但是map使用compareTo(或compare)方法执行所有键比较,因此有两个键从排序地图的角度来看,通过这种方法被视为相等的是相等的.即使排序与equals不一致,也可以很好地定义有序映射的行为.它只是不遵守Map接口的一般合同.

有人可以给出一个具体的例子来说明如果排序与equals不一致可能会出现的问题吗?举例来说,用户定义的类具有自然顺序,即它实现了Comparable.JDK中的所有内部类都保持这个不变量吗?

java comparison equals comparable comparator

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

equals和contains方法之间有什么区别

我正在使用TreeSet以下代码处理该集合:

import java.util.*;
public class Employee implements Comparable<Employee>{

    private int ID;

    public Employee(int iD) {
        ID = iD;
    }

    @Override
    public int compareTo(Employee obj) {
        return this.ID-obj.ID;
    }

    private static void intoTreeSet() {
        Employee e1=new Employee(4);
        Employee e2=new Employee(2);
        Employee e3=new Employee(1);
        Employee e4=new Employee(5);
        Employee e5=new Employee(3);

        Employee eTemp=new Employee(3);

        Set<Employee> set=new TreeSet();
        set.add(e1);set.add(e2);set.add(e3);set.add(e4);set.add(e5);

        System.out.println("output says: ");
        for(Employee e:set){
            System.out.print(e.ID+" ~ ");
        }
        System.out.println();
        if(set.contains(eTemp)){
            System.out.println("C O N T A I N S !!!");
        }

        if(e5.equals(eTemp)){
            System.out.println("E …
Run Code Online (Sandbox Code Playgroud)

java collections treeset

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

如何重新排序List <String>

我创建了以下方法:

public List<String> listAll() {
    List worldCountriesByLocal = new ArrayList();

    for (Locale locale : Locale.getAvailableLocales()) {
        final String isoCountry = locale.getDisplayCountry();
        if (isoCountry.length() > 0) {
            worldCountriesByLocal.add(isoCountry);
            Collections.sort(worldCountriesByLocal);
        }
    }
    return worldCountriesByLocal;
}
Run Code Online (Sandbox Code Playgroud)

它非常简单,它返回用户区域设置中的世界国家列表.然后我对它进行排序以使其按字母顺序排列.这一切都很完美(除了我似乎偶尔会得到重复的国家!).

无论如何,我需要的是将美国和英国置于榜单的首位.我遇到的问题是我无法隔离将为美国和英国返回的索引或字符串,因为这是特定于语言环境的!

任何想法都会非常感激.

java locale list

0
推荐指数
1
解决办法
548
查看次数