gpt4 book ai didi

java - 通过对数组进行排序来创建排名列表

转载 作者:行者123 更新时间:2023-12-01 11:03:22 26 4
gpt4 key购买 nike

我有两个数组,其中一个数组表示名称集合,另一个数组描述其关联的标记。我想按升序对数组内的标记进行排序,然后再对与标记相关的相应名称进行排序。

我的目标是创建一个排名列表。我正在使用处理来执行此操作

float sum = 0;

String [] name = {"A", "B", "C", "D","E"};
float [] mark = {12, 2, 4, 6, 23};

void setup() {

size(600, 600);
smooth();
}

void draw() {
background(225);
fill(0);
println(name.length);
for (int i =0; i<name.length; i++) {
text(name[i] + ":"+ mark[i], 100, 100+i*50);
}
}

/////// i wanted to sort it as E:23, A:12, D:6, C:4, B:2

如果有人能帮助我解决这个问题,那就太好了。 :)

提前非常感谢,优素福

最佳答案

您可以创建一个实现Comparable的数据持有者类。我认为您还可以使用 Map,例如 hashMap。

这里是一个数据持有者类示例:

import java.util.Collections;

ArrayList <Data> d = new ArrayList<Data>();

void setup() {
size(600, 600);

d.add(new Data("A", 12));
d.add(new Data("B", 2));
d.add(new Data("C", 4));
d.add(new Data("D", 6));
d.add(new Data("E", 23));



println("before sorting:\n" + d);

//used reverseOrder as it goes decrescent, but you could just reverse
//the "natural" order in the class it self. Exchange -1 and 1 in compareTo()
// and use Collections.sort(d); here
Collections.sort(d, Collections.reverseOrder());

println("after sorting:\n" + d);
}


/////// i wanted to sort it as E:23, A:12, D:6, C:4, B:2


class Data implements Comparable {
String name;
int mark;

Data(String _n, int _m) {
name = _n;
mark = _m;
}

// this sets the 'natural' order of Data
@Override
int compareTo(Object o) {
Data other = (Data) o;

if (other.mark > mark) {
return -1;
} else if (other.mark < mark) {
return 1;
}
return 0;
}


// this to get a nice looking output in console...
@Override
String toString() {
return name + ":" + nf(mark, 2);
}
}

关于java - 通过对数组进行排序来创建排名列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33160079/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com