Java 列表数组-将Liist数组的每个值旋转n,并保持第一个和最后一个值不变

Java 列表数组-将Liist数组的每个值旋转n,并保持第一个和最后一个值不变,java,list,arraylist,collections,Java,List,Arraylist,Collections,我需要保持TEMP2中TEMP的第一个和最后一个值,所有其他值旋转4。 前- 温度B(指数=1)>>>>>>温度2的B(指数=5) 列表是通过“按行”读取这些值而建立的。 OP希望“按列”对值进行重新排列,即,将值按向下而不是向右读取的方式进行重新排列。正如注释中所指出的,这不是轮换。你要做的是将指数乘以一个常数,然后取剩余的模14。旋转是指添加一个与列表大小成模的常数。我不知道你为什么需要这个,但这里有一个解决方案 List<String> strings = Arrays.asL

我需要保持TEMP2中TEMP的第一个和最后一个值,所有其他值旋转4。 前- 温度B(指数=1)>>>>>>温度2的B(指数=5)

列表是通过“按行”读取这些值而建立的。

OP希望“按列”对值进行重新排列,即,将值按向下而不是向右读取的方式进行重新排列。

正如注释中所指出的,这不是轮换。你要做的是将指数乘以一个常数,然后取剩余的模14。旋转是指添加一个与列表大小成模的常数。我不知道你为什么需要这个,但这里有一个解决方案

List<String> strings = Arrays.asList(
        "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O"
);
List<String> strings2 = new ArrayList<>();
for (int i = 0; i < 14; i++)            
    strings2.add(strings.get((i * 3) % 14));
strings2.add(strings.get(14));
System.out.println(strings2);
List strings=Arrays.asList(
“A”、“B”、“C”、“D”、“E”、“F”、“G”、“H”、“I”、“J”、“K”、“L”、“M”、“N”、“O”
);
List strings2=新的ArrayList();
对于(int i=0;i<14;i++)
strings2.add(strings.get((i*3)%14));
strings2.add(strings.get(14));
系统输出打印LN(strings2);

能否详细介绍一下如何创建
temp2
?例如,
C
temp
中有索引2,但在
temp2
中有索引
10
。这是如何循环的?如果B向右移动了4个位置,为什么C移动了8个位置和13个位置?A B C D E F G H I J K L M ODid你的意思是说每个字符应该从其前一个字符移动4位?我在excel中有3列5行,我正在逐行读取值。。。a b c d e f g h i j k l m n。。。但我想按列插入,所以我需要像-A,D,G,J,M,B,E,H,K,N,C,F,I,L,OHello Paul这样的值,在每个元素后面加上“O”—A O D O…顺便说一句。。谢谢,找到解决方案了@您键入/粘贴错误的VaibhavJaiswal。只有行
strings2.add(strings.get((i*3)%14))
应该在
for
循环中。这绝对有效。
for (int g=0; g<=TEMP.size(); g++){


}
A  B  C
D  E  F
G  H  I
J  K  L
M  N  O
List<String> strings = Arrays.asList(
        "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O"
);
List<String> strings2 = new ArrayList<>();
for (int i = 0; i < 14; i++)            
    strings2.add(strings.get((i * 3) % 14));
strings2.add(strings.get(14));
System.out.println(strings2);
List<String> input = Arrays.asList("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O");

List<String> output = new ArrayList<>(input.size());
for (int col = 0; col < 3; col++)
    for (int row = 0; row < 5; row++)
        output.add(input.get(row * 3 + col));

System.out.println(input);
System.out.println(output);