Используйте декларативный подход для смещения элементов ArrayList вместо использования цикла - PullRequest
0 голосов
/ 16 апреля 2020

Не могли бы вы указать способ смещения элементов списка ниже, не используя a для l oop? Обратите внимание, что на первый элемент списка не влияет выполненная операция. Из [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));
}

Ответы [ 2 ]

1 голос
/ 16 апреля 2020

Здесь попробуйте это.

  • требует использования метода subList. (причина нового вызова 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]
0 голосов
/ 16 апреля 2020

Вы можете сделать это с помощью следующего однострочного:

(items = Arrays.asList(items.get(0))).addAll(items);
...