2013-06-21 4 views
-1

Извините, я настоящий новичок на Java, поэтому у этого вопроса, вероятно, уже есть ответ, но я не смог его найти. Я хочу сделать что-то эквивалентное (я уже знаю, что вы не можете на самом деле перегрузить операторы):Java, сравнивающие объекты

bool operator < (MyClass a, MyClass b) {/*code*/} 

Что является обязательным синтаксис для этого, и где я могу определить эту операцию?

ответ

1

Если вы хотите проверить равенство, вам необходимо переопределить equals() и hashCode() в MyClass. Затем вы можете проверить как a.equals(b).

Если вы хотите сравнить их, тогда вы можете осуществить Comparable в MyClass.

Если вы хотите сравнить, исходя из разных полей, напишите Comparator.

0

java не поддерживает перегрузку оператора, как вы хотите. Вы можете создать метод для сравнения конкретных значений объектов.

4

Есть MyClass реализовать Comparable:

class MyClass implements Comparable<MyClass> { 
    public int compareTo(MyClass other) { 
    // returns a negative number if this < other, 0 if this == other, 
    // a positive number if this > other 
    } 
} 

, а затем сказать a < b, писать a.compareTo(b) < 0.

В качестве альтернативы, чтобы наложить "внешнее упорядочивание," написать Comparator:

Comparator<MyClass> comparator = new Comparator<MyClass>() { 
    public int compare(MyClass a, MyClass b) { 
    // same rules 
    } 
}; 

, а затем сделать comparator.compare(a, b) < 0.

0

В Java есть два интерфейса для чего-то подобного: Comparable и Comparator.

Comparable предназначен для сопоставления this с другим объектом, в то время как Comparator используется для сравнения двух других объектов.

0

Вам нужно будет реализовать методы для сравнения. Это должно быть сделано путем внедрения Comparable.

public class MyClass implements Comparable 
{ 
    public int compareTo(Object o) 
    { 
     // Compare code 
    } 
} 

Этот метод должен возвращать 0, если объекты совпадают (например, «MyString» и «туЗЬптд), отрицательное число, если этот объект меньше, чем тот, что мы сравнивая его (например, , «aaa» и «bbb») и положительное число, если этот объект больше, чем тот, который мы сравниваем с ним (например, «ccc» и «bbb»).

Обратите внимание, что это не " не нужно и не следует ожидать, что отрицательное и положительное число будет одним или отрицательным. Оно просто должно быть отрицательным или положительным. Например, мы могли бы вернуть смещение, которое было бы более конкретным в рассказе нас как сравнить два объекта.