Processing 用同样的方法对2个数组进行排序

Processing 用同样的方法对2个数组进行排序,processing,Processing,我有两个未排序的数组:一个浮点数组(float[]),一个字符串数组(String[])用于描述 我需要对浮点数组从最高值到最低值进行排序,但是描述在字符串数组中,如果我对它们进行排序,字符串数组将不会进行相应的排序 在处理中,有一个函数,但它只对一个数组进行排序 如何对浮点数组进行排序并使描述匹配 float totalCount = 0; float maxValue = 0; String[] statusDescriptions = new String[finishStatusesJS

我有两个未排序的数组:一个浮点数组(
float[]
),一个字符串数组(
String[]
)用于描述

我需要对浮点数组从最高值到最低值进行排序,但是描述在字符串数组中,如果我对它们进行排序,字符串数组将不会进行相应的排序

在处理中,有一个函数,但它只对一个数组进行排序

如何对浮点数组进行排序并使描述匹配

float totalCount = 0;
float maxValue = 0;
String[] statusDescriptions = new String[finishStatusesJSON.size()];
float[] countData = new float[finishStatusesJSON.size()]; 
for (int i = 0; i < finishStatusesJSON.size(); i++) {
  JSONObject finishStatusJSON = (JSONObject) finishStatusesJSON.get(i);
  float count = finishStatusJSON.getFloat("count"); 
  String status = finishStatusJSON.getString("status");
  totalCount += count;
  statusDescriptions[i] = status;
  countData[i] = count;

  // Max value of the table
  if(maxValue < count) maxValue = count;

}
float totalCount=0;
float maxValue=0;
String[]statusDescriptions=新字符串[finishStatusesJSON.size()];
float[]countData=new float[finishStatusesJSON.size()];
对于(int i=0;i
一种解决方案是创建一个包含条目的类,即将浮点与其描述相结合。例如,如果将电影存储为字符串并将其分数存储为浮动,则可以创建一个包含电影描述(字符串)及其分数(浮动)的类
MovieScore
。您可以将此类
设置为可比较的
,然后对
MovieScore
数组进行排序以实现您的目标。

如何使用一个简单的类来保存这两个数据片段并将其保存在一个数组中以便于排序。通过实施
可比
协议来支持排序

class Status implements Comparable<Status> {
    String  status;
    float count;

    public Status(String status, float count) {
        this.status = status;
        this.count = count;
    }

    @Override
    public int compareTo(Status s) {        
        if (this.count < s.count) {
            return 1;
        } else if (this.count > s.count) {
            return -1;
        }

        return 0;
    }
}

Status[] statusArray = new Status[finishStatusesJSON.size()];

for (int i = 0; i < finishStatusesJSON.size(); i++) {
    JSONObject finishStatusJSON = (JSONObject) finishStatusesJSON.get(i);
    Status status = new Status(finishStatusJSON.getString("status"), finishStatusJSON.getFloat("count")); 

    statusArray[i] = status;
}

Arrays.sort(statusArray);
类状态实现可比较{
字符串状态;
浮点数;
公共状态(字符串状态、浮点计数){
这个状态=状态;
this.count=计数;
}
@凌驾
公共int比较(状态s){
if(this.counts.count){
返回-1;
}
返回0;
}
}
Status[]statusArray=新状态[finishStatusesJSON.size()];
对于(int i=0;i也许你可以使用一种数组,其中
K
是类,而
V
是类

因此,您可以使用如下方法,然后正确排序

float count = finishStatusJSON.getFloat("count");
totalCount += count;

map.put( count, finishStatusJSON.getString("status") );
尽管如此,看起来您谈论的是处理,而不是Java


勘误表:最好使用实现类;因为您可以直接将a放入构造函数中,或者使用自然排序,映射将自行排序

如果您仍然希望使用Map实现类,那么我建议您使用Map的方法,然后遵循中建议的相同算法


然而,我对在处理中使用这些类持怀疑态度,因为它实际上可能对其框架无效;但是如果它可以编译并且没有执行错误/异常,那么可能值得一试。

创建一个包含这两个值的简单类,并在数组中使用它。我希望避免创建更多的代码。这很难实现吗?可能是@LeoLeontev的重复这是基本的java,我不能在这里使用这8个东西。你可以使用
字典
查找
字符串
数组的值,使用浮点值作为键。您只需要对浮点数组进行排序并从字典(HasMap)中获取字符串值,这不是java8@user10992206这个答案适用于所有版本的Java,但这并不是分类的。处理的灵感来自Java,但它离Java还很远。例如,您不能使用类(静态)方法。我已编辑了邮件。如果这些类似乎有效,那么您应该尝试使用一个类,该类将按降序对键进行排序。这不是排序@用户10992206,等一下,我马上就到。我忘了包括它。@user10992206,添加了排序支持