gpt4 book ai didi

java - 拆分 LinkedList 对象

转载 作者:行者123 更新时间:2023-12-02 10:35:58 26 4
gpt4 key购买 nike

我需要构造并返回一个新的 Q,其中包含该 Q 的第二个“一半”。

我想要实现的目标的示例

  • 拆分前的 Q:1、3、4、8、14
  • 拆分后的 Q:1、3
  • 新问题:4、8、14
<小时/>
  • 拆分前的 Q:1、3、4、8
  • 拆分后的 Q:1、3
  • 新问题:4、8

类 Q 使用 Java 类库中的类 LinkedList 实现队列 ADT。下面是Q类

import java.util.LinkedList;
public class Q {

// all Q objects have the same default capacity...
private final static int DFLT_CAPACITY = 4;

// every Q object has the following instance variables...
private LinkedList<Object> ll;
private int capacity;

/**
* Constructs an empty Q having DFLT_CAPACITY.
*/
public Q() {
this(DFLT_CAPACITY);
}

/**
* Constructs an empty Q having client supplied capacity.
*
* @param capacity switched to DFLT_CAPACITY if less than one
*/
public Q(int c) {
capacity = c < 1 ? DFLT_CAPACITY : c;
ll = new LinkedList<Object>();
}

我的问题是我需要返回一个 Q 对象,但我有一个 LinkedList。我知道这个尝试是完全有缺陷的,但我已经被困了一段时间了。

public Q split() {
int split = ll.size() / 2;
for (int i = 0; i < split; i++) {
ll.remove(i);
}
Q newQ = (Q) ll.clone();
return newQ;

}

最佳答案

使用subList() LinkedList的方法。
注意:阅读上面链接的 javadoc,这样您就知道它是如何工作的!

您还需要一个新的(私有(private))构造函数来创建新的 Q 对象。

下面假设现有 Q 对象的容量保持不变,并且新的 Q 对象“继承”相同的容量。

private Q(int c, LinkedList<Object> ll) {
this.capacity = c;
this.ll = ll;
}

public Q split() {
List<Object> secondHalf = this.ll.subList(this.ll.size() / 2, this.ll.size());
Q newQ = new Q(this.capacity, new LinkedList<>(secondHalf));
secondHalf.clear();
return newQ;
}

关于java - 拆分 LinkedList 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53292461/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com