gpt4 book ai didi

java - 按正确的顺序对字符串数组进行排序

转载 作者:行者123 更新时间:2023-12-01 07:08:49 25 4
gpt4 key购买 nike

我尝试按正确的顺序对数组进行排序。我在数组的一个字段中存储了 3 个变量(1 int、1 String、1 float)。我尝试使用 native 排序方法,但我的输出未按正确方式排序:

[1 ,Agavendicksaft  ,0.180
, 1 ,Agavendicksaft ,0.284
, 100 ,Röstzwiebel ,0.057
, 103 ,Salz fein ,6.220
, 103 ,Salz fein ,6.452
, 104 ,Salz grob ,0.490
, 114 ,Sesam ,0.735
, 114 ,Sesam ,1.742
, 115 ,Soja Granulat ,43.788
, 116 ,Sonnenblumenkerne ,0.267
, 116 ,Sonnenblumenkerne ,3.636
, 12 ,BAS hell ,0.975
, 12 ,BAS hell ,6.996
, 139 ,Vanille Aroma ,0.068
, 140 ,Weizenmehl Type W1600 ,1.163
, 140 ,Weizenmehl Type W1600 ,1.927
, 141 ,Weizenmehl Type W700 ,138.127
, 141 ,Weizenmehl Type W700 ,45.158
, 142 ,Walnüsse ,0.228
, 144 ,Wiechert Glutenfei ,1.160
, 145 ,Wienerwurst Stange ,0.100
, 150 ,Zitronen Aroma ,0.068
, 151 ,Zucker Normalkristall ,1.039
, 153 ,Wasser ,167.202
, 21 ,Dinkel Flocken ,0.347
, 24 ,Eier ganz ,0.453
, 26 ,Eigelb ProOvo ,0.365
, 29 ,Fenchel ganz ,0.105
, 36 ,Hafer ganz ,3.078
, 47 ,Hirse ganz ,0.133
, 49 ,Honig ,0.186]

所以我有两个问题:

  1. 如何对数组进行正确排序?
  2. 如何将多个条目合并为一个条目? FE不是 140, 1.163 140, 1.927 => 140, 3,09 (我不能在我的代码前面这样做,因为该数组是 3 个 sql-result-arrays 的组合)

这是我的代码:

s = Results2String(resultSet);

splitResult = s.split("/");
System.out.println(s);

s = null;
s = Results2String(resultSet2);
splitResult2 = s.split("/");
System.out.println(s);

s = null;
s = Results2String(resultSet3);
splitResult3 = s.split("/");
System.out.println(s);

System.out.println(splitResult3[0]);

preResult = new String[splitResult.length + splitResult2.length];

System.arraycopy(splitResult, 0, preResult, 0, splitResult.length);
System.arraycopy(splitResult2, 0, preResult, splitResult.length, splitResult2.length);
System.out.println(Arrays.toString(preResult));

result = new String[splitResult.length + splitResult2.length + splitResult3.length];
System.arraycopy(preResult, 0, result, 0, preResult.length);
System.arraycopy(splitResult3, 0, result, preResult.length, splitResult3.length);

Arrays.sort(result);
System.out.println(Arrays.toString(result));

最佳答案

我假设 intStringfloat 中的每一个属于同一类。

因此,您应该将它们放在一个类中并实现 Comparable ( documentation ):

public class Food implements Comparable<Food> {
private int id;
private String name;
private float score; // or maybe kcal... ?

public Food(int id, String name, float score) {
this.id = id;
this.name = name;
this.score = score;
}

@Override
public int compareTo(Food other) {
return id - other.getId();

// use the following if you want to sort by name instead
// return name.compareTo(other.getName());
}

public String getId() {
return id;
}

public String getName() {
return name;
}
}

然后你可以对Food数组进行排序......

<小时/>

如何使用

我仍然不确定您的 resultSet 是什么(以及为什么您有其中三个),但我假设它们是 ResultSets from a database query 。此外,我假设 id-name-score 组合实际上是数据库中的行。

然后,您可以遍历这些 ResultSet 并将每行的值放入 Food 对象中:

 ResultSet resultSet; // filled somewhere else
List<Food> food = new ArrayList<Food>();

while (resultSet.next()) {
int id = resultSet.getInt(0); // assuming the ids are in the first column
String name = resultSet.getString(1); // assuming the names are in the second column
float score = resultSet.getFloat(2); // assuming the scores are in the third column

food.add(new Food(id, name, score));
}

Collections.sort(food);

我希望这会有所帮助...

但是,如果您的 resultSet确实 来自数据库查询的结果集,那么您可能应该使用 ORDER BY 对 SQL 查询中的值进行排序...

关于java - 按正确的顺序对字符串数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18018716/

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