嗨,我有一个列表,可以说这些项目 {30 50 5 60 90 5 80} 我想做的是例如将第 3 和第 4 个元素组合在一起并拥有 {30 50 65 90 5 80}
你能告诉我我该怎么做吗?我正在使用 java 链表类。
嗨,我有一个列表,可以说这些项目 {30 50 5 60 90 5 80} 我想做的是例如将第 3 和第 4 个元素组合在一起并拥有 {30 50 65 90 5 80}
你能告诉我我该怎么做吗?我正在使用 java 链表类。
阅读 LinkedList 的 API 文档。没有“组合”方法,但有一种方法可以删除给定索引处的元素,还有一种方法可以在列表中的任何位置插入元素。
http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html
我会遍历你的链表(从头节点开始)。我猜每个 LinkedList 对象上都有一个 nextNode 属性,它允许您的迭代器工作。当您到达索引 2(值为 5)时,找到索引 2 的下一个节点(值为 60),并将该值添加到索引 2(值为 5 使其为 65)。然后找到索引为 3(值为 60)的 nextNode,它指向值为 90 的节点(称为 newNextNode),并将索引 2(值为 5)的 nextNode 属性重置为该节点。
在当前链接中添加两个值,删除这两个链接并在其位置添加一个新链接。API 位于:http ://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html 使用remove和add方法。
链表不提供对链表执行操作的方法,它只管理链表。为您执行此操作的唯一方法是从所述位置检索元素并将它们相加,然后从列表中删除所述元素,然后使用索引插入新项目。
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