Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对象的Arraylist-最小值_Java_Collections_Arraylist_Min - Fatal编程技术网

Java 对象的Arraylist-最小值

Java 对象的Arraylist-最小值,java,collections,arraylist,min,Java,Collections,Arraylist,Min,我有一个对象的arraylist,对象有“double”值。我需要打印出所有对象,首先打印值最高的对象,最后打印值最低的对象 我还尝试使用集合对arraylist进行排序,然后打印,但我似乎无法让它工作 我的arraylist是: ArrayList<Transition> transitions = new ArrayList<Transition>(); 希望你们中的一些人能提供帮助:)如果转换对象实现了可比较的接口,请尝试这种方法。它应该会起作用 Collect

我有一个对象的arraylist,对象有“double”值。我需要打印出所有对象,首先打印值最高的对象,最后打印值最低的对象

我还尝试使用集合对arraylist进行排序,然后打印,但我似乎无法让它工作

我的arraylist是:

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));//最小值

仅仅因为
转换
两个
值,并不能使
转换
具有可比性。您必须实现一个比较器,或者将转换定义为implements
Comparable
,然后实现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);
}
}

仅仅因为
转换
两个
值,并不能使
转换
具有可比性。您必须实现一个比较器,或者将转换定义为implements
Comparable
,然后实现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;
}