Ваш вопрос имеет много двусмысленности. Вот пример класса с 5 полями. Этот класс сортируется с использованием Comparable
, который в этом случае сортируется по полю a
, затем по полю b
, а если a
и b
идентичны, то они эквивалентны в порядке сортировки. Если вы реализуете Comparable
, вам, вероятно, также потребуется реализовать equals()
и обеспечить его согласованность, как того требует спецификация интерфейса Comparable
. См. Также javapractices.com «Внедрение compareTo()
» для получения более подробной информации.
Рабочий пример:
import java.util.Arrays;
class SortableThing implements Comparable<SortableThing>
{
final String foo;
final int a, b, c, d, e;
public SortableThing(String foo, int a, int b, int c, int d, int e)
{
this.foo = foo; this.a = a;
this.b = b; this.c = c;
this.d = d; this.e = e;
}
@Override
public int compareTo(SortableThing o)
{
if (this.a != o.a)
return this.a - o.a;
else if (this.b != o.a)
return this.b - o.b;
else return 0;
}
@Override
public boolean equals(Object o)
{
if (!(o instanceof SortableThing)) return false;
SortableThing st = (SortableThing)o;
return st.a == this.a && st.b == this.b;
}
@Override
public String toString()
{
return new StringBuilder().append(foo).append(": <").append(a)
.append(',').append(b)
.append(',').append(c)
.append(',').append(d)
.append(',').append(e).append('>').toString();
}
public static void main(String[] args)
{
final SortableThing one, two, three, four;
one = new SortableThing("one", 4, 2, 42, 42, 42);
two = new SortableThing("two", 2, 3, 42, 42, 42);
three = new SortableThing("three", 2, 2, 42, 42, 42);
four = new SortableThing("four", 1, 50, 42, 42, 42);
SortableThing[] list = new SortableThing[] {one,two,three,four};
System.out.println("Before: "+Arrays.deepToString(list));
Arrays.sort(list);
System.out.println("After: "+Arrays.deepToString(list));
}
}
Выход:
Before: [one: <4,2,42,42,42>, two: <2,3,42,42,42>, three: <2,2,42,42,42>, four: <1,50,42,42,42>]
After: [four: <1,50,42,42,42>, three: <2,2,42,42,42>, two: <2,3,42,42,42>, one: <4,2,42,42,42>]