Должно отсортировать по цене, но пишет вроде бы то, что обычно пишет, если Comparable не использовать, если я правильно понял. Повторял за примером с сайта и скорее всего чего-то недопонял, вот ссылка, если понадобится: https://vertex-academy.com/tutorials/ru/interfejsy-comparable-comparator-java/
1 файл:
public interface Comparable<T>{
public int compareTo(T o);
}
2 файл:
public class Guns implements Comparable<Guns>{
float weight;
long price;
String manifacturerName;
boolean hasOwner;
public Guns(float weight, long price, String manifacturerName, boolean hasOwner){
this.weight = weight;
this.price = price;
this.manifacturerName = manifacturerName;
this.hasOwner = hasOwner;
}
@Override
public String toString(){
final StringBuffer sb = new StringBuffer("Guns{");
sb.append("weight=").append(weight);
sb.append(", price=").append(price);
sb.append(", manifacturerNname=").append(manifacturerName).append('\'');
sb.append(", hasOwner=").append(hasOwner);
sb.append('}');
return sb.toString();
}
public int compareTo(Guns anotherGun) {
if(this.price == anotherGun.price) {
return 0;
} else if(this.price > anotherGun.price) {
return -1;
} else {
return 1;
}
}
}
3 файл:
import java.util.TreeSet;
public class ComparableTest{
public static void main(String[] args){
TreeSet<Guns> gunsTreeSet = new TreeSet<>();
Guns portalGun = new Guns(4.56f, 243_463_244, "Aperture Science", false);
Guns gravityGun = new Guns(4.95f, 356_568, "East Black Mesa", true);
Guns shotGun = new Guns(3.12f, 12_345, "Alliance", true);
gunsTreeSet.add(portalGun);
gunsTreeSet.add(gravityGun);
gunsTreeSet.add(shotGun);
for(Guns h:gunsTreeSet){
System.out.println(h);
}
}
}
По документации Comparable.compareTo
отрицательное число нужно возвращать когда текущий объект меньше объекта, с которым производится сравнение:
Returns a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.
Возвращает отрицательное целое, ноль или положительное целое если текущий объект меньше, равен или больше переданного соответственно.
У вас метод возвращает -1 когда цена текущего оружия больше цены переданного. Соответственно, объекты сортируются по убыванию.
Если хотите сортировать по возрастанию, то измените знак сравнения:
} else if(this.price < anotherGun.price) {
return -1;
} else {
return 1;
}
P.S. Для корректной сортировки нужно использовать интерфейс из стандартной библиотеки (java.lang.Comparable
) свой интерфейс Comparable
объявлять не нужно.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Я хочу сделать метод у которого есть параметр, который может принимать одно из трёх значений, причем если его не задавать, то одно из трёх...
Так же будет хорошо, если поделитесь инфой, о том что желательно установить на mac, для комфортного автоматизированного тестирования api
Каким способом можно перехватить звонок на Android, и перенаправить его на ПК, нашел как позвонить с помощью своего приложения, но нужно что бы звук...