我需要帮助来尝试解决我的问题。
在这里是:我有一个列表,如:List<Result> T
,在此列表中,我还有另一个列表。 List<Result> T
具有类似Result (int a, int b, int c, int d, List<Sim> sim)
的构造函数。 List<Sim>
有两个属性,即int and double
值。我想做的是:
当我在T
中添加一个元素时,List<Result>
需要按List<Sim>
进行排序,是它的双精度值。
因此,List将以List上此double值的降序排序。我尝试了很多事情,但直到没有任何结果。每当我在T上添加一个元素时,该元素都会添加到List的末尾,并且List本身不会进行排序。
public class Result
{
int a, b, c, d;
List<Sim> sim;
public Result(int a, int b, int c, int d, List<Sim> sim)
{
this.a = a;
this.b = b;
this.sim = sim;
}
public int compareTo(Result o)
{
int cmp = ((a.key == o.key) && (b.key == o.key)) ? 0 : (b.key < o.key) ? -1 : 1;
return cmp;
}
}
public class Sim
{
int a;
double value;
public Sim (int a, double value)
{
this.a = a;
this.value = value;
}
}
我尝试了其他类型的比较器,例如比较和实现Comparable接口,但是我没有运气。你们能帮我弄清楚如何解决这个问题吗?非常感谢您的帮助。
伙计们,我真的很感谢您的帮助,确实可以帮助我弄清楚如何解决我的问题。这就是我所做的:
public static class SimComparator implements Comparator<Result>
{
public int compare(Result res1, Result res2)
{
double sim1 = res1.sim.get(0).sim;
double sim2 = res2.sim.get(0).sim;
if (sim1 < sim2)
{
return -1;
}
else if (sim1 > sim2)
{
return 1;
}
else
}
return 0;
}
}
}
答案 0 :(得分:0)
由于每个List<Result>
对象中List<Sim>
和Result
中对象的数量均相同,因此我认为{{1 }}对象和Result
对象。我的意思是,听起来每个Sim
对象都与一个Result
对象正相关。如果是这样,那么您应该更改Sim
类以容纳单个Result
而不是Sim
的整个列表:
Sim
现在,您可以使用相关class Result {
int a, b, c, d;
Sim sim;
public Result(int a, int b, int c, int d, Sim sim) {
this.a = a;
this.b = b;
this.sim = sim;
}
// ...
}
对象中的属性轻松比较Result
对象:
Sim