嗨,我目前有4个数组,它们都保存着不同的数据,我遇到的问题是我想按字母顺序对其中一个数组进行排序,通常我会这样做

class IgnoreCaseComparator implements Comparator<String> {
   public int compare(String strA, String strB) {
      return strA.compareToIgnoreCase(strB);
   }
}
IgnoreCaseComparator icc = new IgnoreCaseComparator();
java.util.Collections.sort(ARRAY,icc);


我想按数组的顺序排列数组,但是我需要将数组排序在一起。

例如,假设我的数组如下所示

Pet Array: [Dog, Cat, Bird]
Owner Array: [Jim, Kyle, Joe]
Friend Array: [Jake, Jim, John]
Cat Array: [false, true, false]


我想根据Pet Array进行排序,我的输出应该像这样,其中所有第三个值现在都是第一个,第一个值现在是第三个(这简化了我的实际数组包含数千个输入的方式)

Pet Array: [Bird, Cat, Dog]
Owner Array: [Joe, Kyle, Jim]
Friend Array: [John, Jim, Jake]
Cat Array: [false, true, false]


有没有一种简单的方法可以在其中排序一个数组并使其他数组跟随。感谢您对这个问题的任何帮助。

===编辑===

除了我的解决方案略有不同之外,原因是我稍微阅读了已检查的答案是完美的,我在compareTo方法中只返回了略有不同的返回行

    class Entity implements Comparable<Entity> {
        String Pet;
        String Owner;
        String Friend;
        int Cat;

        Entity(String Pet, String Owner, String Friend, int Cat) {
          this.Pet = Pet;
          this.Owner = Owner;
          this.Friend = Friend;
          this.Cat = Cat;
        }

        @Override
        public int compareTo(Entity other) {
            return this.Pet.compareToIgnoreCase(other.Pet);
        }
     }

最佳答案

您可以声明一个对象:

class Entity implements Comparable<Entity> {
    Pet pet;
    Person owner;
    Friend friend;
    boolean cat;

    Entity(Pet pet, Person owner, Friend friend, boolean cat) {
      this.pet = pet;
      this.owner = owner;
      this.friend = friend;
      this.cat = cat;
    }

    public int compareTo(Entity b) {
      return pet.getName().compareToIgnoreCase(b.pet.getName());
    }
 }


然后构建这些对象的数组或列表。和排序。

Entity[] array = new Entity[pets.length];
for (int i = 0; i < pets.length) {
    array[i] = new Entity(pets[i], owners[i], friends[i], cats[i]);
}
Arrays.sort(array);


之后,您可以将其拆分回数组。

for (int i = 0; i < pets.length) {
    pets[i] = array[i].pet;
    owners[i] = array[i].owner;
    ...
}

09-04 09:49
查看更多