Java 如何对不同类型(int和String)的多个数组进行排序

Java 如何对不同类型(int和String)的多个数组进行排序,java,arrays,string,sorting,int,Java,Arrays,String,Sorting,Int,因此,我逐行读取文本文件中的一些信息,并基本上将其保存在内存中,存储到不同类型的数组中(字符串和int)。我总共有2个字符串数组和6个int数组 我想按字母顺序对其中一个数组(字符串)进行排序,并在此基础上对保存位置中的其他字符串数组和整数数组进行排序 文本文件示例:B,美国,3,1,0,2,2,7 C、 联合王国,3,1,2,0,2,1 A、 丹麦,3,3,2,0,2,1 每当我读取文本文件中的一行时,就会保存我提到的那些数组。所以,我有一个字符串,字符串,int,int,int,int,in

因此,我逐行读取文本文件中的一些信息,并基本上将其保存在内存中,存储到不同类型的数组中(字符串和int)。我总共有2个字符串数组和6个int数组

我想按字母顺序对其中一个数组(字符串)进行排序,并在此基础上对保存位置中的其他字符串数组和整数数组进行排序

文本文件示例:B,美国,3,1,0,2,2,7

C、 联合王国,3,1,2,0,2,1

A、 丹麦,3,3,2,0,2,1

每当我读取文本文件中的一行时,就会保存我提到的那些数组。所以,我有一个字符串,字符串,int,int,int,int,int,int,在起始位置0处,依此类推,直到最后一行被读取


Ps:在我读了文本文件之后,我不应该再有文本文件,只处理保存在内存中的信息。(不使用对象)

创建单个
对象
,该对象表示单个“条目”的数据类型组合,并使其
实现该类型的可比性

public class MyEntry implements Comparable<MyEntry> {
     private String theStringToSortOn;

     private String theOtherString;
     private int theFirstInt;
     private int theSecondInt;
     // ...

     public int compareTo(final MyEntry entry) {
          int comparison = String.compare(this.theStringToSortOn, entry.theStringToSortOn);
          if (comparison != 0) {
              return comparison;
          }
          // Do some other rudimentary sorting based on the other fields of the class.
     }
}
公共类MyEntry实现了可比较的{
私有字符串theStringToSortOn;
私有字符串另一个字符串;
第一阶段的私人投资;
第二种是私人的;
// ...
公共int比较(最终MyEntry条目){
int comparison=String.compare(this.theStringToSortOn,entry.theStringToSortOn);
如果(比较!=0){
收益比较;
}
//根据类的其他字段进行一些基本排序。
}
}
然后,您只需将它们添加到
列表中
并对其进行排序


但是,如果您打算坚持使用基于数组的实现,那么您需要提供某种形式的方法来识别您排序的数组中哪些索引发生了更改(以及它们的更改内容),然后将这些更改镜像到其他数组

在不为您编写代码的情况下,下面是一个简单的实现,介绍了如何仅使用阵列来实现这一点:

  • 在对数组排序之前复制一份,以便跟踪索引移动到的位置
  • 创建另一个
    int
    s数组,长度与此数组相同
  • 对数组进行排序
  • 对原始元素进行迭代,对于每个元素,对排序后的元素进行迭代以找到新索引
  • 将此新索引存储在
    int
    s数组中(位于表示未修改索引的位置)
  • 使用此“排序/索引数组”更改需要根据第一个数组进行排序的所有其他数组的索引

如果没有看到输入样本,就没有答案。您认为“基于该排序,其他位置也应该自行排序,以便与文本文件中的位置相匹配”是可以理解的吗?请重新措辞。在对字符串数组进行排序时,您可以跟踪新索引(例如在temp Int数组中),然后相应地重新排列其他数组。对于初学者,请尝试像nameMap.put(name,theLine)这样的映射;这样,当您根据键映射进行排序时,就有了行。该行可以是类似小部件的对象。您可以使用不同的键为该行创建多个映射。如果您可以使用ArrayList而不是字符串,那么这一部分很简单:“我想按字母顺序对1个数组(字符串)进行排序”。(“list.sort(null)”将作为字符串执行此任务。“无法理解”基于这种排序,其他位置也应该自行排序,以便与文本文件中的位置相匹配。“我在你想去的地方得到它,但我不能使用对象。我也理解你的第二个解释,这正是我想要的,但事实是,我并不理解如何去做。@FranciscoFerreira:在我回答的第二部分中,我补充了详细说明(天真地)去做的步骤。不过仅供参考,数组是
Object
s(与
String
s一样)。您已经在使用
Object
s。。。