简短的回答:我建议创建一个单独的类,其中包含有关实际和提升() 的信息。如果您假设以下情况:String
int
public class BoostString {
int boost;
String str;
public BoostString(int boost, String str) {
this.boost = boost;
this.str = str;
}
}
然后,您可以使用 a 对数组进行排序,它与 Java 8 流 API 配合使用特别好。Comparator
String[] strings = {"string1", "string2", "string3"};
int[] boosts = {40, 32, 34};
final String[] sorted = IntStream.range(0, boosts.length)
.mapToObj(i -> new BoostString(boosts[i], strings[i])) // Create the instance
.sorted(Comparator.comparingInt(b -> b.boost)) // Sort using a Comparator
.map(b -> b.str) // Map it back to a string
.toArray(String[]::new); // And return an array
上面示例中的 方法是使用该方法创建的,该方法是使用 Java 8 创建 for ints 的便捷方法。Comparator
Comparator.comparingInt
Comparator
解释:通常,在 Java 中比较对象时,可以使用内置排序函数之一,例如在何处提供自己的 .界面很简单,看起来像这样:Collections.sort
Comparator
Comparator
public interface Comparator<T> {
int compare(T o1, T o2);
// Other default methods for Java 8
}
返回值的类型在 JavaDoc 中是这样描述的:int
返回负整数、零或正整数,因为第一个参数小于、等于或大于第二个参数。
当您对s或(或实际上)进行排序时,这是开箱即用的,因为它们是 - 它们具有内置的自然排序,对于s,这是按字母顺序排序的,并且对于它按升序排序(请参阅JavaDoc)。String
int
Integer
Comparable
String
Integers
Comparable
另外,如果您使用的是第三方库,则还有其他“配对”或“元组”实现可用。您不必创建自己的 a 和 的“对”。一个例子是Apache Commons的Fair类。String
int