У меня есть этот класс Java с int с полем, и другие поля не нужны для этого вопроса.
class MyInteger {
int integer;
public MyInteger(int integer) {
this.integer = integer;
}
public int getInteger() {
return integer;
}
public void setInteger(int integer) {
this.integer = integer;
}
}
Теперь я тестирую свой класс
Сначала: я создал массив с целыми числами.
int size = 12;
MyInteger[] integers = new MyInteger[size];
for (int p = 0; p < size; p++) {
integers[p] = new MyInteger(
java.util.concurrent.ThreadLocalRandom.current().nextInt(
Integer.MIN_VALUE, Integer.MAX_VALUE)
);
}
Теперь распечатайте его.
System.out.println("UNSORTED");
for (int p = 0; p < size; p++) {
int length = String.valueOf(integers[p].getInteger()).length();
String stringValue = new String(new char[12 - length]).replace("\0", " ") + integers[p].getInteger();
System.out.println("p:" + p + " -> " + stringValue);
}
Здесь я пытаюсь отсортировать его.
Arrays.sort(integers, new Comparator<MyInteger>() {
@Override
public int compare(MyInteger myInteger1, MyInteger myInteger2) {
return myInteger2.getInteger() - myInteger1.getInteger();
}
});
Распечатать его снова
System.out.println("DESCENDING");
for (int p = 0; p < size; p++) {
int length = String.valueOf(integers[p].getInteger()).length();
String stringValue = new String(new char[12 - length]).replace("\0", " ") + integers[p].getInteger();
System.out.println("p:" + p + " -> " + stringValue);
}
Теперь мой ВЫХОД ...
UNSORTED
p:0 -> 1516262435
p:1 -> -1895913122
p:2 -> 460516193
p:3 -> 2056891047
p:4 -> 1556892429
p:5 -> 609045519
p:6 -> -1105298052
p:7 -> 1015464430
p:8 -> -232510140
p:9 -> 28575513
DESCENDING
p:0 -> -1105298052
p:1 -> -1895913122
p:2 -> 2056891047
p:3 -> 1556892429
p:4 -> 1516262435
p:5 -> 1015464430
p:6 -> 609045519
p:7 -> 460516193
p:8 -> 28575513
p:9 -> -232510140
Я знаю, потому что иногда емкость (в битах) (int2 - int1) больше простой int Какая моя лучшая альтернативасделать это?