【发布时间】:2020-03-08 09:24:39
【问题描述】:
各位,我需要帮助来解决我的问题。
这里是:我有一个列表,例如: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;
}
}
}
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
标签: java arrays list sorting object