嗨,我目前有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数组进行排序,我的输出应该是这样的,所有的第三个值现在都是第一个,第一个值现在是第三个(这比简化了很多,我的实际数组包含数千个输入)
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);
}
}
为什么不制作一个包含对象的数组,其中包含Pet、Owner、Friend和Cat字段,并让比较器按所需字段排序呢。
class PetContainer { // Find a better name
public String Pet, Owner, Friend;
public bool Cat;
}
然后把它们放在一个数组里
class IgnoreCaseComparator implements Comparator<PetContainer> {
public int compare(PetContaier PA, PetContainer PB) {
return PA.Pet.compareToIgnoreCase(PB.Pet);
}
}
这只是一个草图。创建一个get方法,而不是通过字段访问它们,并为字段创建一些合适的名称。
希望有帮助。
类Tuple
,用于字段:pet
、所有者
、朋友
和cat
-每个都有相关的类型。可比较
,这基本上只是根据相关字段进行比较。[或者,或者-为此类实现匹配的比较器
]。元组[]组合数组
[或列表
您可以声明一个对象:
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;
...
}
主要内容:升序,降序我们在学习 Java 的过程中肯定会遇到对数组进行升序或降序等排序问题,本节主要介绍如何实现 Java 数组的升序和降序。Java 语言使用 Arrays 类提供的 sort() 方法来对数组进行排序。 升序 使用 java.util.Arrays 类中的 sort() 方法对数组进行升序分为以下两步: 导入 java.util.Arrays 包。 使用 Arrays.sort(数组名) 语法对数
我在Java中有一个数组,其中包含一组随机日期: {2015年1月20日、2015年2月12日、2015年2月20日、2015年6月21日、2015年7月12日、2015年7月28日、2015年7月30日、2015年9月24日、2015年12月31日} 如何按月将此阵列拆分为多个阵列? 我想要 {2015年1月20日}、{2015年2月12日、2015年2月20日}、{2015年6月21日}、{2
问题内容: 所以我正在制作一个需要处理多个数组的程序。有没有办法对所有这些数组进行排序以反映一个数组的排序?这些值在所有三个数组中都位于相同的索引位置,需要在排序后保持相同的索引值 例: 我有三个数组: 有什么方法可以对距离数组进行排序,然后将该排序反映给其他数组。因此,如果按名称排序并且Jane变为0,则其他数组中相同位置的其他值也将移至0。我该怎么办? 问题答案: 更好/面向对象的方法可能是让
问题内容: 请原谅我这是多余的还是超基本的。我要从R进入Python / Numpy,并且很难在脑海里翻转事物。 我有一个维数组,我想使用索引值的另一个n维数组进行排序。我知道我可以将其包装成一个循环,但是似乎应该有一种非常简洁的Numpyonic方式将其击败并提交。这是设置n = 2的问题的示例代码: 所以现在我有一个2 x 5的随机数数组和2 x 5的索引。我已经阅读了约10次帮助,但显然我的
问题内容: 我想排序一个,但问题是我的母语字符-我的字母是这样的:。如您所见,字符从头到尾排在第二位,在字母上排第二位,因此在对数组进行排序后,它的排序不正确。我所有的母语字符都移到了数组的末尾。例: 输出: 应该: 问题答案: 您应该使用Collator类。 例如 然后使用此整理器对集合进行排序
问题内容: 有没有什么简便的方法可以按降序对数组进行排序,就像它们在Arrays类中如何按升序排序? 问题答案: 你可以使用它对所有对象进行排序 不能直接用于降序对原始数组进行排序。如果尝试Arrays.sort()通过传递由定义的反向 来调用该方法,则会抛出错误 找不到适合sort(int [],comparator)的方法 可以与“对象数组”(例如整数数组)一起使用,但不能与基本数组(例如整数