Java基于另一个数组对多个数组进行排序
我希望根据其中一个数组的值对7个数组进行升序排序,然后使用方法内部的循环打印最终数组。数组值由用户输入,至少包含一组数据,但不超过5组 到目前为止,我的代码如下,它是选择排序的基本结构,因为我被要求使用它,我希望对数组simp(代表简单兴趣)进行升序排序,但我不知道如何让所有其他数组一起移动并保留值 有没有关于循环方法的想法Java基于另一个数组对多个数组进行排序,java,arrays,sorting,Java,Arrays,Sorting,我希望根据其中一个数组的值对7个数组进行升序排序,然后使用方法内部的循环打印最终数组。数组值由用户输入,至少包含一组数据,但不超过5组 到目前为止,我的代码如下,它是选择排序的基本结构,因为我被要求使用它,我希望对数组simp(代表简单兴趣)进行升序排序,但我不知道如何让所有其他数组一起移动并保留值 有没有关于循环方法的想法 public static void sort(double[] amount, double[] iRate, int[] term, double[] simp, do
public static void sort(double[] amount, double[] iRate, int[] term, double[] simp, double[] month, double[] daily, double[] weekly)
{
for (int i=0;i<simp.length-1;i++)
{
int minindex=i;
for (int j=i+1;j<simp.length;j++)
{
if(simp[minindex]>simp[j])
minindex=j;
}
double temp = simp[minindex];
simp[minindex]=simp[i];
simp[i]= temp;
}
}
可以创建包含所有字段的类:
class Entity implements Comparable<Entity> {
double simp;
double amount;
double rate;
...
// construct each instance taking the next line from
// the arrays or doubles
// implement compareTo
public int compareTo(Entity entity) {
// compare only the field you need
return Double.compare(simp, entity.simp);
}
}
类实体实现了可比较的{
双simp;
双倍金额;
双倍费率;
...
//构造每个实例,从中获取下一行
//数组或双数组
//实施比较
公共整数比较(实体){
//只比较您需要的字段
返回Double.compare(simp,entity.simp);
}
}
然后基于七个数组构建一个实体数组,并使用arrays.sort()
最后,您可以将数据复制回double数组,或者直接从实体[]打印内容。使用现有代码执行此操作的一个简单方法是,每当您在
simp
中交换元素时,交换所有数组中的元素:
double temp = simp[minindex];
simp[minindex]=simp[i];
simp[i]= temp;
temp = iRate[minindex];
iRate[minindex]=iRate[i];
iRate[i]= temp;
.
.
.
这不是最优雅的方式。OO的方法是让一个拥有
amount、iRate、term…
成员的对象对这些对象的数组进行排序。为什么要编写自己的选择排序实现,而不是只使用Java库中内置的排序?这是家庭作业吗?确实是,我被困在这上面了。我已经完成了所有的工作,除了把所有的数组从一个数组中排序这一部分。可以在这里发布家庭作业问题,但请先读一读:我已经看到了这一点,在过去的5天里我做出了真诚的努力。这里提供的完整代码看起来很凌乱,但它确实满足了我的需要,尽管在调用该方法并试图将其整齐地显示出来后,我仍然遇到了麻烦,但这没关系。
double temp = simp[minindex];
simp[minindex]=simp[i];
simp[i]= temp;
temp = iRate[minindex];
iRate[minindex]=iRate[i];
iRate[i]= temp;
.
.
.