Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按降序排序整型数组_Java_Arrays_Sorting - Fatal编程技术网

Java 按降序排序整型数组

Java 按降序排序整型数组,java,arrays,sorting,Java,Arrays,Sorting,可能重复: 以下代码将按升序对数组进行排序: 我需要按降序排序。我如何使用比较器来实现这一点 请提供帮助。有一种方法可以创建一个由int[]数组支持的列表。您可以将其与Collections.sort一起使用,以将比较器应用于基础数组 List<Integer> integersList = Ints.asList(arr); Collections.sort(integersList, Collections.reverseOrder()); List integersLi

可能重复:


以下代码将按升序对数组进行排序:

我需要按降序排序。我如何使用比较器来实现这一点

请提供帮助。

有一种方法可以创建一个由
int[]
数组支持的
列表。您可以将其与Collections.sort一起使用,以将比较器应用于基础数组

List<Integer> integersList = Ints.asList(arr);
Collections.sort(integersList, Collections.reverseOrder());
List integersList=Ints.asList(arr);
Collections.sort(integersList,Collections.reverseOrder());

请注意,后者是一个由实际数组支持的实时列表,因此它应该非常有效。

如果它不是一个大/长数组,请镜像它:

for( int i = 0; i < arr.length/2; ++i ) 
{ 
  temp = arr[i]; 
  arr[i] = arr[arr.length - i - 1]; 
  arr[arr.length - i - 1] = temp; 
}
for(int i=0;i
对于基本数组类型,您必须编写一个反向排序算法:

或者,您可以将
int[]
转换为
Integer[]
并编写比较器:

public class IntegerComparator implements Comparator<Integer> {

    @Override
    public int compare(Integer o1, Integer o2) {
        return o2.compareTo(o1);
    }
}
比较器比较器=新比较器(){ @凌驾 公共整数比较(整数o1,整数o2){ 返回o2.compareTo(o1); } }; //选择1 整数[]数组=新整数[]{1,24,4,4345}; 排序(数组、比较器); //选择2 int[]array2=新的int[]{1,24,4,4345}; Listlist=Ints.asList(array2); 集合。排序(列表、比较); array2=整数到数组(列表);
是的。我知道。实际上我想知道是否有一种方法可以使用比较器,而不是原语。Comparator必须实现,因为它是一个接口。如果你要使用镜像进行foreach,我认为使用(int I=array.length-1;I>=0;I--)的负迭代器会简单得多。是的,我知道。实际上我想知道有没有一种方法可以使用Comparator。@android,没有Comparator可以处理对象,不是原语。我的eclipse在上显示错误ArrayUtils@android忘记ArrayUtils,在ConvertPrimitiveArrayToboxTableTypeArray(a1)@android中使用Guavaerror,该方法不存在,这是我创建的一个示例,用于将
int[]
转换为
Integer[]
。如果我将int转换为Integer,然后我可以使用Collections.reverseOrder,但我必须再次转换为int。这有效吗?我认为最好在array.sort()之后反转数组,然后是两个conversion@android,
Arrays.sort()
没有提供在基元数组类型上使用
Comparator
的工具,因此我刚刚创建了2转换。第一个“示例用法”是按降序对
int[]
进行排序。只需在排序后按降序遍历数组即可。似乎
Ints
类位于外部google库中,
com.google.common.primitives.Ints
public class IntegerComparator implements Comparator<Integer> {

    @Override
    public int compare(Integer o1, Integer o2) {
        return o2.compareTo(o1);
    }
}
Integer[] a2 = convertPrimitiveArrayToBoxableTypeArray(a1);
Arrays.sort(a2, new IntegerComparator()); // OR
// Arrays.sort(a2, Collections.reverseOrder());

//Unbox the array to primitive type
a1 = convertBoxableTypeArrayToPrimitiveTypeArray(a2);
    Comparator<Integer> comparator = new Comparator<Integer>() {

        @Override
        public int compare(Integer o1, Integer o2) {
            return o2.compareTo(o1);
        }
    };

    // option 1
    Integer[] array = new Integer[] { 1, 24, 4, 4, 345 };
    Arrays.sort(array, comparator);

    // option 2
    int[] array2 = new int[] { 1, 24, 4, 4, 345 };
    List<Integer>list = Ints.asList(array2);
    Collections.sort(list, comparator);
    array2 = Ints.toArray(list);