【问题标题】:Reverse an Array using Collections.reverse() method in java not functioning as expected [duplicate]在java中使用Collections.reverse()方法反转数组未按预期运行[重复]
【发布时间】:2021-02-10 08:19:33
【问题描述】:

我试图使用 java 中的 Collections.reverse() 方法来反转字符数组中的元素。它没有反转它们,所以我采用了一个整数数组,正如我所指的示例中使用的那样,但没有成功

这是我的代码

int[] intarr = {1,2,3,5,7,8};
System.out.println(Arrays.toString(intarr));
Collections.reverse(Arrays.asList(intarr));
System.out.println(Arrays.toString(intarr));

它返回两个与输入相同的列表!这里出了什么问题?

【问题讨论】:

    标签: java arrays collections reverse


    【解决方案1】:

    Arrays.asList(intarr) 并没有按照你的想法去做。

    鉴于intarr 是一个原始数组,不可能简单地将其变成一个列表;毕竟,List<int> 还不是合法的 java。

    因此,这产生了一个 List<int[]>(如 int 数组列表),其中只有 1 个元素:您的 int 数组。正如您所猜测的那样,反转 1 大小的列表并没有任何作用。

    没有使用第三方库的唯一答案。

    【讨论】:

    • 在我有机会对你投反对票之前,你投了我的票(谢天谢地)。我的回答从来没有这么错。这太疯狂了,我永远也猜不到。这不太直观。所以T泛型参数变成int[]?因为我们传入了一个数组,这是匹配参数的唯一方法。为什么它会生成一个单例数组列表,而不仅仅是一个包含原始数组和唯一元素的列表?
    • 感谢您的详细解释,我将原始 int 转换为它的包装类类型,并且函数按预期工作
    • 这个答案并不完全正确,但它的要点当然是正确的。 asList 方法返回一个 List<int[]>,其中包含原始数组。我只是为自己测试了它。
    • @MichaelWelch 是的,这不直观。将Arrays.asList 设为可变参数方法是一个历史错误。
    • @Holger 是的,现在我检查了方法签名,很明显它需要按照它的方式工作。
    猜你喜欢
    • 2015-10-13
    • 1970-01-01
    • 2014-10-02
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    相关资源
    最近更新 更多