我的问题与下面的问题相同,但是答案非常模糊,我不知道如何解决。
sort a List<Tuple> from highest to lowest
如果您可以更详细地描述如何执行此操作,将不胜感激。谢谢
最佳答案
尝试运行我为您制作的这个示例,然后思考发生了什么:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Tuple<R, S, T>
{
private R name;
private S data;
private T index;
public Tuple(R r, S s, T t)
{
this.name = r;
this.data = s;
this.index = t;
}
public static void main(String[] args)
{
List<Tuple<String, int[], Integer>> tuples = new ArrayList<Tuple<String, int[], Integer>>();
// insert elements in no special order
tuples.add(new Tuple<String, int[], Integer>("Joe", new int[] { 1 }, 2));
tuples.add(new Tuple<String, int[], Integer>("May", new int[] { 1 }, 1));
tuples.add(new Tuple<String, int[], Integer>("Phil", new int[] { 1 }, 3));
Comparator<Tuple<String, int[], Integer>> comparator = new Comparator<Tuple<String, int[], Integer>>()
{
public int compare(Tuple<String, int[], Integer> tupleA,
Tuple<String, int[], Integer> tupleB)
{
return tupleA.getIndex().compareTo(tupleB.getIndex());
}
};
Collections.sort(tuples, comparator);
for (Tuple<String, int[], Integer> tuple : tuples)
{
System.out.println(tuple.getName() + " -> " + tuple.getIndex());
}
}
public R getName()
{
return name;
}
public void setName(R name)
{
this.name = name;
}
public S getData()
{
return data;
}
public void setData(S data)
{
this.data = data;
}
public T getIndex()
{
return index;
}
public void setIndex(T index)
{
this.index = index;
}
}
关于java - 根据字段之一对元组进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5690537/