Java 对集合进行排序的最佳方法?
我有一个代表汽车的类:Java 对集合进行排序的最佳方法?,java,collections,Java,Collections,我有一个代表汽车的类: public class Car implements Comparable<Car> { String name; int value; ... @Override public int compareTo(Car o) { return name.compareTo(o.name); } } 公共级轿车{ 字符串名; int值; ... @凌驾 公共内部比较(车辆o){ 返回name.com
public class Car implements Comparable<Car> {
String name;
int value;
...
@Override
public int compareTo(Car o) {
return name.compareTo(o.name);
}
}
公共级轿车{
字符串名;
int值;
...
@凌驾
公共内部比较(车辆o){
返回name.compareTo(o.name);
}
}
另一类代表种族:
public class Race {
cars = new HashSet<Car>();
...
public Collection<Car> sortByName() {
List<Car> carList = new ArrayList<>(cars);
Collections.sort(carList);
return carList;
}
}
公共级比赛{
cars=新HashSet();
...
公共集合sortByName(){
列表carList=新阵列列表(cars);
收集.分类(carList);
返回卡利斯特;
}
}
这是我对集合排序的实现,我知道有一个TreeSet,但我不知道如何通过TreeSet而不是HashSet进行比较,因为如果我使用TreeSet,我在其中找不到方法comprator(),如果我做得很好,有人能帮我吗?如果没有,如何使用TreeSet?使用
比较器
而不是汽车中的Comparable
Comparator
位于它所比较的类的外部,而Comparable
位于该类的内部。更详细的解释如下:
现在,谈谈你的问题。实现这个比较器:
public class CarComparatorByName implements Comparator<Car> {
public int compare(Car o1, Car o2) {
return o1.getName().compareTo(o2.getName());
}
}
TreeSet
现在将使用您创建的比较器
或者,如下面的注释所述,您可以将Car
作为可比较的保存,并在创建时将它们简单地放入树集。TreeSet
将使用Car implements compariable
中定义的自然排序顺序,使用比较器
而不是Car
中的compariable
Comparator
位于它所比较的类的外部,而Comparable
位于该类的内部。更详细的解释如下:
现在,谈谈你的问题。实现这个比较器:
public class CarComparatorByName implements Comparator<Car> {
public int compare(Car o1, Car o2) {
return o1.getName().compareTo(o2.getName());
}
}
TreeSet
现在将使用您创建的比较器
或者,如下面的注释所述,您可以将Car
作为可比较的保存,并在创建时将它们简单地放入树集。TreeSet
将使用Car implements compariable
中定义的自然排序顺序,使用比较器
而不是Car
中的compariable
Comparator
位于它所比较的类的外部,而Comparable
位于该类的内部。更详细的解释如下:
现在,谈谈你的问题。实现这个比较器:
public class CarComparatorByName implements Comparator<Car> {
public int compare(Car o1, Car o2) {
return o1.getName().compareTo(o2.getName());
}
}
TreeSet
现在将使用您创建的比较器
或者,如下面的注释所述,您可以将Car
作为可比较的保存,并在创建时将它们简单地放入树集。TreeSet
将使用Car implements compariable
中定义的自然排序顺序,使用比较器
而不是Car
中的compariable
Comparator
位于它所比较的类的外部,而Comparable
位于该类的内部。更详细的解释如下:
现在,谈谈你的问题。实现这个比较器:
public class CarComparatorByName implements Comparator<Car> {
public int compare(Car o1, Car o2) {
return o1.getName().compareTo(o2.getName());
}
}
TreeSet
现在将使用您创建的比较器
或者,如下面的注释所述,您可以将Car
作为可比较的保存,并在创建时将它们简单地放入树集。TreeSet
将使用中定义的自然排序顺序
基于树映射的NavigableSet实现。根据使用的构造函数,使用元素的自然顺序或在设置的创建时间提供的比较器对元素进行排序。
自然排序是指通过使Car
类实现Comparable
接口而强制执行的顺序。只需将您的汽车添加到树集
实例中,它们就会为您排序。以下是树集
中的一个片段:
基于树映射的NavigableSet实现。根据使用的构造函数,使用元素的自然顺序或在设置的创建时间提供的比较器对元素进行排序。
自然排序是指通过使Car
类实现Comparable
接口而强制执行的顺序。只需将您的汽车添加到树集
实例中,它们就会为您排序。以下是树集
中的一个片段:
基于树映射的NavigableSet实现。根据使用的构造函数,使用元素的自然顺序或在设置的创建时间提供的比较器对元素进行排序。
自然排序是指通过使Car
类实现Comparable
接口而强制执行的顺序。只需将您的汽车添加到树集
实例中,它们就会为您排序。以下是树集
中的一个片段:
基于树映射的NavigableSet实现。根据使用的构造函数,使用元素的自然顺序或在设置的创建时间提供的比较器对元素进行排序。
自然排序是指通过使Car
类实现Comparable
接口而强制执行的顺序。只需将您的汽车添加到TreeSet
实例,它们就会为您排序。如果您的Car
类没有覆盖hashCode
和equals
方法,然后使用HashSet
是没有意义的,你应该从一开始就使用TreeSet
,它使用compareTo
方法,从它所持有的引用来看。我不知道你所说的“method comprator()”是什么意思,因为HashSet
中也没有这样的东西。是的,对不起,我已经累了,如果我修改了我的代码,但我只是更改了