Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.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 基于其中一个字段对元组进行排序_Java_Algorithm_Sorting - Fatal编程技术网

Java 基于其中一个字段对元组进行排序

Java 基于其中一个字段对元组进行排序,java,algorithm,sorting,Java,Algorithm,Sorting,我的问题与下面的问题相同,但答案非常模糊,我不明白如何进行。 如果您能更详细地描述如何做到这一点,我们将不胜感激。谢谢试着运行我为您制作的这个示例,想想发生了什么: 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; pri

我的问题与下面的问题相同,但答案非常模糊,我不明白如何进行。
如果您能更详细地描述如何做到这一点,我们将不胜感激。谢谢

试着运行我为您制作的这个示例,想想发生了什么:

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;
}

}
import java.util.ArrayList;
导入java.util.Collections;
导入java.util.Comparator;
导入java.util.List;
公共类元组
{
私名;
私人数据;
私人T指数;
公共元组(R、S、T)
{
this.name=r;
此.data=s;
该指数=t;
}
公共静态void main(字符串[]args)
{
列表元组=新的ArrayList();
//不按特殊顺序插入元素
添加(新元组(“Joe”,新int[]{1},2));
add(新元组(“May”,newint[]{1},1));
添加(新元组(“Phil”,新int[]{1},3));
比较器比较器=新比较器()
{
公共整数比较(元组元组,
元组(元组)
{
返回tupleA.getIndex().compareTo(tupleB.getIndex());
}
};
集合。排序(元组、比较器);
for(元组:元组)
{
System.out.println(tuple.getName()+“->”+tuple.getIndex());
}
}
公共R getName()
{
返回名称;
}
公共无效集合名(R名称)
{
this.name=名称;
}
公共的getData()
{
返回数据;
}
公共无效设置数据(S数据)
{
这个数据=数据;
}
公共T getIndex()
{
收益指数;
}
公共无效集合索引(T索引)
{
这个指数=指数;
}
}

一般答案就是这里给出的答案。要对列表进行排序,您需要让列表元素具有规范排序(即实现可比较接口),或者让比较器对排序算法进行比较。然后,您可以使用
集合。排序
来完成实际工作。

请发布您的代码,以及哪些不起作用/哪些不明白。