java - 逆向3数组列表

标签 java arraylist

给定一个数组列表,其值为 [10, 13, 2, 8, 7, 90, -1, 2]。我必须创建一个方法来反转所述列表中 3 个值的每个连续序列。例如 (10, 13, 2) 将变为 (2,13 10),(8, 7, 90) 将变为 (90,7,8) 但是,它不会打印不属于3 的序列。到目前为止,这就是我所拥有的:

public static ArrayList<Integer> reverse3(ArrayList<Integer> list) {
    ArrayList<Integer> newList = new ArrayList<Integer>();

    for(int i = 0; i <list.size()-1; i++){
        for(int j = list.size()-1; j >= 0 ; j--){
            newList.add(list.get(j)); 
    }
}

    return newList;

我在使其正常工作时遇到问题。输出反转了 3 的序列,但也打印了 -1 和 2。

最佳答案

听起来你真正需要做的就是交换 1 和 3、2 和 4 等。所以:

for (int i = 0; i < list.size(); i += 3) {
    Collections.swap(list, i, i + 2);
    for (int j = i; j < i + 3; j++)
        System.out.println(list.get(j) + " ");
}

或者您可以直接打印出来,甚至不交换项目:

for (int i = 0; i < list.size(); i += 3) {
    for (int j = i + 2; j >= i; j--)
        System.out.println(list.get(j) + " ");
}

这是使用子列表和 Java 8 流的解决方案:

IntStream.range(0, list.size() / 3)
    .mapToObj(n -> list.sublist(n, n + 3))
    .map(Collections::reverse)
    .flatMap(List::stream)
    .forEach(System.out::println); 

关于java - 逆向3数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35614912/

相关文章:

java - 关于哈希码的问题

java - 从文本文件读取并存储到集合

java - 如何将滚动条添加到 Vaadin 布局

java - 如何从当前时间的开放时间开始/关闭

java - 在代码中添加 "到字符串

java - 在数组列表中存储多个字符串

c# - 二维数组 C#

Java:从文件扫描到数组列表,然后最小/最大/平均值/标准偏差

c - C 中的 Arraylist 在重新分配时失败

java - 交易延长时段