Рейтинг:
0
CPallini
Попробуй
class Person implements Comparable<Person>
{
private int _id;
private String _name;
public int getId(){ return _id;}
public String getName(){ return _name; }
Person( int id, String name){ _id = id; _name = name; }
@Override
public int compareTo(Person p)
{
return Integer.compare(this.getId(), p.getId());
}
public static void main( String arg[])
{
Person p1 = new Person( 12, "Boo");
Person p2 = new Person( 10, "Foo");
String is = p1.compareTo(p2) > 0 ? "is" : "is not ";
System.out.printf("%s %s bigger than %s", p1.getName(), is, p2.getName());
}
}
[обновление]
Следуя любезной просьбе...
import java.util.*;
class Person implements Comparable<Person>
{
private int _id;
private String _name;
public int getId(){ return _id;}
public String getName(){ return _name; }
Person( int id, String name){ _id = id; _name = name; }
@Override
public int compareTo(Person p)
{
return Integer.compare(this.getId(), p.getId());
}
public static void main( String arg[])
{
Person p1 = new Person( 12, "Boo");
Person p2 = new Person( 10, "Foo");
ArrayList <Person> alp=new ArrayList<Person>();
alp.add(p1);
alp.add(p2);
Collections.sort(alp);
for ( Person p : alp)
System.out.printf("%s\n", p.getName());
Collections.sort( alp, new NameComparator() );
for ( Person p : alp)
System.out.printf("%s\n", p.getName());
}
}
class NameComparator implements Comparator<Person>
{
@Override
public int compare(Person p1, Person p2) {
return p1.getName().compareTo(p2.getName());
}
}
[/обновление]
Member 14002893
О, спасибо!! Что делать, если мне придется сравнивать по 2-м направлениям. Один из способов, показанных выше(по ID) и нужен новый метод compareto (сравнивая по названию), чтобы я мог сделать коллекции.сортировка(List_Persons,Заименем) и коллекций.сортировка(List_Persons,по ID)
CPallini
Смотрите обновление в моем решении.
Member 14002893
этот класс выполняется в другом файле или может быть выполнен в том же классе, что и человек??
CPallini
Вы можете записать его в тот же файл, конечно. Вы также можете использовать анонимный класс или лямбду, см.
https://stackoverflow.com/questions/22637900/java8-lambdas-vs-anonymous-classes
Member 14002893
и также, когда я делаю коллекции.сортировать(список,компаратор) в другой класс мне нужно Новый писать коллекций.сортировать(список,новый компаратор());?? спасибо..
Member 14002893
в чем разница между ними :
класс NameComparator реализует компаратор<person>{
и
публичный статический компаратор<fruit> FruitNameComparator
= новый компаратор<фрукты>(){
спасибо..