使用声明式方法来移动 ArrayList 元素而不是使用循环
Use declarative approach to shift ArrayList elements instead of using a loop
能否请您指出一种不使用 for 循环来移动下面列表的元素的方法?请注意,列表的第一个元素不受所执行操作的影响。
从 [2, 3, 4, 5] 列表将变为 [2, 2, 3, 4]
List<BigDecimal> items = Arrays.asList(new BigDecimal(2), new BigDecimal(3), new BigDecimal(4), new BigDecimal(5));
for (int i = items.size() - 1; i >= 1; i--) {
items.set(i, items.get(i - 1));
}
你可以用下面的一行代码来完成:
(items = Arrays.asList(items.get(0))).addAll(items);
来,试试这个。
- 需要 subList 方法。 (调用 new ArrayList<>() 的原因)
- 向左旋转 1 项。
List<BigDecimal> items = new ArrayList<>(
Arrays.asList(new BigDecimal(2), new BigDecimal(3),
new BigDecimal(4), new BigDecimal(5)));
List<BigDecimal> list = items.subList(1, items.size());
list.add(items.get(0));
System.out.println(list);
版画
[3, 4, 5, 2]
能否请您指出一种不使用 for 循环来移动下面列表的元素的方法?请注意,列表的第一个元素不受所执行操作的影响。 从 [2, 3, 4, 5] 列表将变为 [2, 2, 3, 4]
List<BigDecimal> items = Arrays.asList(new BigDecimal(2), new BigDecimal(3), new BigDecimal(4), new BigDecimal(5));
for (int i = items.size() - 1; i >= 1; i--) {
items.set(i, items.get(i - 1));
}
你可以用下面的一行代码来完成:
(items = Arrays.asList(items.get(0))).addAll(items);
来,试试这个。
- 需要 subList 方法。 (调用 new ArrayList<>() 的原因)
- 向左旋转 1 项。
List<BigDecimal> items = new ArrayList<>(
Arrays.asList(new BigDecimal(2), new BigDecimal(3),
new BigDecimal(4), new BigDecimal(5)));
List<BigDecimal> list = items.subList(1, items.size());
list.add(items.get(0));
System.out.println(list);
版画
[3, 4, 5, 2]