У меня есть список объектов, эти объекты на самом деле являются шахматными фигурами.
Каждый объект содержит название цены и ее положение на шахматном столе. Имена K
для короля, Q
для королевы, R
для ладьи ... и т. Д.
Итак, у меня есть ArrayList<Enemy> chesspieces
. Список не отсортирован, элементы могут выглядеть примерно так:
P,P,P,P,P,P,P,P,R,N,B,Q,K,B,N,R.
Я хотел бы создать своего рода приоритетную сортировку, чтобы список был таким:
K,Q, R, R, B, B, N,N,R,R P,P,P,P,P,P,P,P
I начал что-то делать, но я вижу, как это ошибочно, и я не уверен, как это реализовать, вот что я сделал до сих пор
вот мой обновленный класс врага
public class Enemy implements Comparable {
public Piece name;
public int rank;
public int file;
public String position;
private int value;
public Enemy(Piece name, int file, int rank, String position) {
this.name = name;
this.rank = rank;
this.file = file;
this.position = position;
}
public int getValue(Piece name) {
if (name.toString() == "k") value = 0;
if (name.toString() == "Q") value = 1;
if (name.toString() == "R") value = 2;
if (name.toString() == "B") value = 3;
if (name.toString() == "N") value = 4;
if (name.toString() == "R") value = 5;
if (name.toString() == "P") value = 6;
System.out.println("ENMIY : " + name.toString() + " threat" + value);
return value;
}
@Override
public int compareTo(Object o) {
if (o instanceof Enemy) {
Enemy other = (Enemy)o;
return this.value - other.value;
} else {
return 0;
}
}
}
здесь мой вывод
Collections.sort(enemyLocation);// PPNPPPPPPRNBQKBR