错误:swap(Object [],int,int)在集合中具有私有访问权限

时间:2016-03-07 11:58:00

标签: java collections compiler-errors

我正在学习Java并编写QuickSort类编码。在某些时候,我需要交换数组中的元素,因此我尝试使用Collections.swap来做,建议使用javac QuickSort.java,例如in this question。但是,error: swap(Object[],int,int) has private access in Collections会向我抛出错误:

QuickSort.java

我在这里做错了什么?完整代码package src.sort; import java.util.Collections; public class QuickSort { public static void sort(Comparable[] xs) { sort(xs, 0, xs.length); } private static boolean less(Comparable x, Comparable y) { return x.compareTo(y) < 0; } private static void sort(Comparable[] xs, int fst, int lst) { if (fst >= lst) return; int i = fst, j = lst; Comparable pivot = xs[(i + j) / 2]; while (i <= j) { while (less(xs[i++], pivot)); while (less(pivot, xs[j--])); if (i <= j) Collections.swap(xs, i++, j--); } sort(xs, fst, j); sort(xs, i, lst); } }

{{1}}

1 个答案:

答案 0 :(得分:3)

错误很明确。您无法调用该方法,因为它是一种私有方法,只能访问 <Window.Resources> <Style TargetType="{x:Type Button}" x:Key="First" > <Setter Property="Background" Value="Red"/> </Style> <Style TargetType="{x:Type Button}" x:Key="Second" > <Setter Property="Background" Value="Green"/> </Style> </Window.Resources> <StackPanel> <Button x:Name="A"> <Button.Resources> <Style TargetType="{x:Type Button}" BasedOn="{StaticResource First}" /> </Button.Resources> content A</Button> <Button x:Name="B"> <Button.Resources> <Style TargetType="{x:Type Button}" BasedOn="{StaticResource Second}" /> </Button.Resources> content B</Button> </StackPanel> 类中的代码。编写自己的方法非常容易,该方法具有与此简单方法相同的功能。

链接问题中建议的交换方法是一种公共方法,它交换列表的两个元素 - Collections。您尝试调用的方法是一种不同的方法,它交换数组的两个元素,并且它是私有的 - public static void swap(List<?> list, int i, int j)