结合列表项

时间:2012-04-28 22:57:30

标签: java linked-list

嗨我有一个列表,让我们说这些项目{30 50 5 60 90 5 80}我想要做的是例如将第3和第4个元素组合在一起并且{30 50 65 90 5 80}

你能告诉我我该怎么办?我正在使用java链表类。

5 个答案:

答案 0 :(得分:0)

阅读LinkedList的API文档。没有“combine”方法,但有一种方法可以删除给定索引处的元素,以及一种在列表中的任何位置插入元素的方法。

http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html

答案 1 :(得分:0)

我遍历你的链表(从头节点开始)。我猜测每个LinkedList对象上都有一个nextNode属性,允许你的迭代器工作。当你到达索引2(值为5)时,找到索引2的下一个节点(值为60),并将该值添加到索引2(值为5,使其为65)。然后找到索引3的下一个节点(值为60),该节点指向值为90的节点(调用此newNextNode)并将索引2的nextNode属性(值为5)重置为该节点。

答案 2 :(得分:0)

在当前链接中添加两个值,删除这两个链接并在其位置添加一个新链接。其API位于:http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html使用删除添加方法。

答案 3 :(得分:0)

链接列表不提供在列表上执行操作的方法,它只管理列表。为您执行此操作的唯一方法是从所述位置检索元素并将其添加,然后从列表中删除所述元素,然后使用索引插入新项目。

答案 4 :(得分:0)

public class Main {
    public static void main(String[] args) {
        List<Integer> list = new LinkedList<>();
        list.add(30);
        list.add(50);
        list.add(5);
        list.add(60);
        list.add(90);
        list.add(5);
        list.add(80);
        System.out.println(list);
        combine(list, 2, 3);
        System.out.println(list);
    }
    public static void combine(List<Integer> list, int indexA, int indexB) {
        Integer a = list.get(indexA);
        Integer b = list.get(indexB);
        list.remove(indexB); // [30, 50, 5, 90, 5, 80]
        list.add(indexA, a + b); // [30, 50, 65, 5, 90, 5, 80]
        list.remove(indexB); // [30, 50, 65, 90, 5, 80]
    }
}

输出结果为:

[30, 50, 5, 60, 90, 5, 80]
[30, 50, 65, 90, 5, 80]

您需要检查空值以避免NullPointerException