Java 对象的Arraylist-最小值
我有一个对象的arraylist,对象有“double”值。我需要打印出所有对象,首先打印值最高的对象,最后打印值最低的对象 我还尝试使用集合对arraylist进行排序,然后打印,但我似乎无法让它工作 我的arraylist是:Java 对象的Arraylist-最小值,java,collections,arraylist,min,Java,Collections,Arraylist,Min,我有一个对象的arraylist,对象有“double”值。我需要打印出所有对象,首先打印值最高的对象,最后打印值最低的对象 我还尝试使用集合对arraylist进行排序,然后打印,但我似乎无法让它工作 我的arraylist是: ArrayList<Transition> transitions = new ArrayList<Transition>(); 希望你们中的一些人能提供帮助:)如果转换对象实现了可比较的接口,请尝试这种方法。它应该会起作用 Collect
ArrayList<Transition> transitions = new ArrayList<Transition>();
希望你们中的一些人能提供帮助:)如果转换对象实现了可比较的接口,请尝试这种方法。它应该会起作用
Collections.sort(transitions);
Transition transition = transitions.get(0);
如果转换对象实现了可比较的接口,请尝试这种方法。它应该会起作用
Collections.sort(transitions);
Transition transition = transitions.get(0);
List transitions=new ArrayList();
//填写清单
Collections.sort(转换、新比较器(){
@凌驾
公共整数比较(转换lhs、转换rhs){
如果(左S.doubleValue>右S.doubleValue)
返回1;
if(左S.doubleValue<右S.doubleValue)
返回-1;
返回0;
}
});
System.out.print(transitions.get(0));//最小值
列表转换=新建ArrayList();
//填写清单
Collections.sort(转换、新比较器(){
@凌驾
公共整数比较(转换lhs、转换rhs){
如果(左S.doubleValue>右S.doubleValue)
返回1;
if(左S.doubleValue<右S.doubleValue)
返回-1;
返回0;
}
});
System.out.print(transitions.get(0));//最小值
仅仅因为转换
有两个
值,并不能使转换
具有可比性。您必须实现一个比较器,或者将转换定义为implementsComparable
,然后实现comparTo()方法。您可以通过该双倍值比较这两个对象。然后可以使用sort()
和min()
Java不知道如何比较对象,除非您告诉它对象的可比性。有些类具有可比性,如字符串
类、日期
、整数
等
编辑:使转换具有可比性
公共类转换实现了可比较的{
双重价值;
公共过渡(双重价值){
这个值=值;
}
公共整数比较(转换t){
如果(this.value>t.value){//您将通过“value”比较转换
返回1;
}
else if(this.value==t.value){
返回0;
}
否则{
返回-1;
}
}
}
上课{
公共静态void main(字符串[]args){
过渡段1=新过渡段(5);
过渡段2=新过渡段(6);
ArrayList trannys=新的ArrayList();
trannys.add(tranny1);
trannys.add(tranny2);
集合。排序(trannys);
double lowTrannyValue=trannys.get(0.value);
}
}
仅仅因为转换
有两个
值,并不能使转换
具有可比性。您必须实现一个比较器,或者将转换定义为implementsComparable
,然后实现comparTo()方法。您可以通过该双倍值比较这两个对象。然后可以使用sort()
和min()
Java不知道如何比较对象,除非您告诉它对象的可比性。有些类具有可比性,如字符串
类、日期
、整数
等
编辑:使转换具有可比性
公共类转换实现了可比较的{
双重价值;
公共过渡(双重价值){
这个值=值;
}
公共整数比较(转换t){
如果(this.value>t.value){//您将通过“value”比较转换
返回1;
}
else if(this.value==t.value){
返回0;
}
否则{
返回-1;
}
}
}
上课{
公共静态void main(字符串[]args){
过渡段1=新过渡段(5);
过渡段2=新过渡段(6);
ArrayList trannys=新的ArrayList();
trannys.add(tranny1);
trannys.add(tranny2);
集合。排序(trannys);
double lowTrannyValue=trannys.get(0.value);
}
}
正如其他人所说,如果你想使用集合.sort()
,你必须有转换
实现可比
接口,这意味着包括.compareTo()
并将你的类头修改为:
public class Transition implements Comparable<Transition>
这里有一个参考。正如其他人所说,如果你想使用
集合.sort()
,你必须有转换
实现可比
接口,这意味着包括一个.compareTo()
并将你的类头修改为:
public class Transition implements Comparable<Transition>
以下是。您是否尝试过Collections.sort()?是否需要按升序/降序排列?然后使用TreeSet您的转换类必须实现Compariable是否尝试过Collections.sort()?是否需要按升序/降序排列?然后使用TreeSet,您的转换类必须实现Comparable,我该怎么做?我想我有点理解你的意思,但我不知道如何去做(在Java中很新)。@user2795095我也给出了另一种方法。希望能有帮助。谢谢:)我现在已经得到了要运行的代码,但它现在是按升序排列的。我希望我能理解如何修复它。你的答案非常有用:)如果你想让它按不同的顺序排列,只需在
compareTo()
方法中切换1和-1。我该怎么做?我想我有点理解你的意思,但我不知道如何去做(在Java中很新)。@user2795095我也给出了另一种方法。希望能有帮助。谢谢:)我现在有代码要运行了,bu
public class Transition implements Comparable<Transition>
Collections.sort(transitions, new Comparator<Transition>() {
@Override
public int compareTo(Transition t1, Transition t2) {
return t1.getDoubleValue().compareTo(t2.getDoubleValue());
}
});
@Override
public int compareTo(Transition t1, Transition t2) {
return t1.getDoubleValue() > t2.getDoubleValue() ? 1 :
t1.getDoubleValue() < t2.getDoubleValue() ? -1 : 0;
}