前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Java 移动 ArrayList 中的元素的方法

Java 移动 ArrayList 中的元素的方法

作者头像
明明如月学长
发布于 2023-03-13 04:46:03
发布于 2023-03-13 04:46:03
1.5K00
代码可运行
举报
运行总次数:0
代码可运行

原文地址:https://www.baeldung.com/java-arraylist-move-items

1. 概述

Java为我们提供了一系列在 ArrayList 中重新排列元素的方法。在本教程中,我们将介绍其中的三个。

2. 移动元素

最原始的方法,也是给我们最常用工的方法,是将元素直接移动到新位置。**我们可以通过首先使用 ArrayList.remove() 来做到这一点,它返回已删除的项目。然后我们可以用 ArrayList.add() 将该项重新插入到我们选择的位置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Test
    void givenAList_whenManuallyReordering_thenOneItemMovesPosition() {
        ArrayList<String> arrayList = new ArrayList<>(Arrays.asList("one", "two", "three", "four", "five"));

        String removed = arrayList.remove(3);
        arrayList.add(2, removed);

        ArrayList<String> expectedResult = new ArrayList<>(Arrays.asList("one", "two", "four", "three", "five"));
        assertEquals(expectedResult, arrayList);
    }

底层 ArrayList _使用数组。这意味着删除和插入项目会产生很大的开销,因为移动所有其他元素。出于这个原因,如果可能的话,我们应该避免使用这种方法,并使用以下两个方法之一,它们都使 ArrayList 保持其原始长度。

3. 交换两个元素

我们可以使用 Collections.swap() 来交换 ArrayList 中两个项目的位置。swap() 方法有三个参数,首先是要调整的 ArrayList,然后是要交换的两个元素的位置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Test
public void givenAList_whenUsingSwap_thenItemsSwapPositions() {
    ArrayList<String> arrayList = new ArrayList<>(Arrays.asList("one", "two", "three", "four", "five"));

    Collections.swap(arrayList, 1, 3);

    ArrayList<String> expectedResult = new ArrayList<>(Arrays.asList("one", "four", "three", "two", "five"));
    assertEquals(expectedResult, arrayList);
}

在这里,我们交换了位置 1 和 3 中的项目,并确认列表看起来符合我们的预期。

4. 旋转整个 List

**最后,我们还可以将旋转应用于列表,将所有元素移动给定的距离。**距离没有限制。因此,如果需要,我们可以多次循环所有内容。正距离将根据我们的视角将项目向右或向下旋转列表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Test
void givenAList_whenUsingRotateWithPositiveDistance_thenItemsMoveToTheRight() {
    ArrayList<String> arrayList = new ArrayList<>(Arrays.asList("one", "two", "three", "four", "five"));

    Collections.rotate(arrayList, 2);

    ArrayList<String> expectedResult = new ArrayList<>(Arrays.asList("four", "five", "one", "two", "three"));
    assertEquals(expectedResult, arrayList);
}

在这里,这些项目都向右移动了两个位置,一旦到达终点,就会循环回到起点。或者,如果需要,我们也可以以负距离向左旋转:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Test
void givenAList_whenUsingRotateWithNegativeDistance_thenItemsMoveToTheLeft() {
    ArrayList<String> arrayList = new ArrayList<>(Arrays.asList("one", "two", "three", "four", "five"));

    Collections.rotate(arrayList, -2);

    ArrayList<String> expectedResult = new ArrayList<>(Arrays.asList("three", "four", "five", "one", "two"));
    assertEquals(expectedResult, arrayList);
}

5. 结论

在本文中,我们了解了 Java 为我们重新排序 ArrayList 提供的三个选项。出于性能原因,如果可能的话,我们应该考虑使用 swap()rotate()。如果我们想要更自由地控制元素,或者只有一个元素在移动,那么我们学习了如何使用 remove()add() 手动将元素移动到我们需要的任何位置。 这些示例的完整代码可在 GitHub 上找到。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 概述
  • 2. 移动元素
  • 3. 交换两个元素
  • 4. 旋转整个 List
  • 5. 结论
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档