这两天查了很多资料都没有成功,
现在我有包含 7 个整数(+ 和 -)的字符串,并用逗号分隔。
我写了一个示例代码来解释。
ArrayList<String> str = new ArrayList<String>();
str.add("9,-9,21,23,28,29,35");
str.add("18,18,-21,28,28,32,34");
str.add("-11,-11,22,28,29,-30,31");
str.add("8,-8,26,31,31,31,31");
str.add("8,8,26,-32,25,29,35");
str.add("10,9,-21,45,25,29,35");
str.add("-11,59,21,25,25,-29,35");
str.add("12,-9,21,55,25,29,15");
str.add("9,9,21,25,25,-29,35");
str.add("7,9,21,25,-35,25,35");
str.add("4,-39,21,-15,25,-29,35");
str.add("9,9,21,25,27,29,-35");
str.add("10,9,21,35,25,39,15");
str.add("8,-9,21,-25,25,29,-35");
str.add("18,-9,21,-23,25,29,-35");
Collections.sort(str);
这不会返回正确的排序数组。它测试数字的第一位并继续排序。
但我想要的是,排序必须基于字符串中的第一个数字。仅当数字相同时(假设字符串数组的第一个数字中有三个 9),它才应该检查这些数字中的第二个数字(单独的捆绑字符串)并相应地排序,依此类推。
结果应该是这样的
9 , -9 , 21 , 23 , 28 , 29 , 35
9 , 9 , 21 , 25 , 25 , -29 , 35
9 , 9 , 21 , 25 , 27 , 29 , -35
这个方法里有没有排序的方法。如果有的话请告诉我,欢迎任何相关答案。
提前致谢。
最佳答案
您为所需的排序语义使用了不正确的数据类型。 Java 看到您想要对字符串进行排序,因此它会按字典顺序对它们进行排序,因为您没有告诉它这样做。 Java 不会读心术:)
不要尝试对字符串进行排序,如“9,-9,21,23,28,29,35”,而是对整数数组进行排序,如{9, 9, -9, 21, 23, 28, 29、35}。您仍然需要为比较器编写自己的逻辑,但现在相对容易,因为您不必进行任何字符串解析。
如果您需要排序的数据以字符串格式到达您的程序,请尝试对 ','
进行 split
,然后将字符串数组的每个组成部分解析为 int,最后将其全部转储到 int 数组或 ArrayList 中。
关于java - 对具有负整数的数字字符串进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16075137/