gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 21:47:14 25 4
gpt4 key购买 nike

我正在学习 Java 并编写 QuickSort 类。在某些时候,需要交换数组中的元素,因此我尝试使用 Collections.swap 来实现这一点,建议使用它,例如 in this question 。但是,javac QuickSort.java 向我抛出错误:

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

我在这里做错了什么? 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);
}
}

最佳答案

这个错误非常明显。您无法调用该方法,因为它是私有(private)方法,只能通过 Collections 中的代码访问。类(class)。编写您自己的方法非常容易,该方法与这个简单方法具有相同的功能。

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

关于java - 错误 : swap(Object[], int,int) 在集合中具有私有(private)访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35843158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com