Java 拆分LinkedList对象

Java 拆分LinkedList对象,java,oop,linked-list,Java,Oop,Linked List,我需要构造并返回一个新的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.

我需要构造并返回一个新的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>();
}
import java.util.LinkedList;
公共类Q{
//所有Q对象都具有相同的默认容量。。。
专用最终静态int DFLT_容量=4;
//每个Q对象都有以下实例变量。。。
私有链接列表ll;
私人int能力;
/**
*构造具有DFLT_容量的空Q。
*/
公共Q(){
这(DFLT_容量);
}
/**
*构造具有客户端提供的容量的空Q。
*
*@参数容量如果小于1,则切换为DFLT_容量
*/
公共Q(国际c){
容量=c<1?DFLT\U容量:c;
ll=新的LinkedList();
}
我的问题是我需要返回一个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;
public Q split(){
int split=ll.size()/2;
对于(int i=0;i
}使用
链接列表的方法
注意:阅读上面链接的javadoc,这样您就知道它是如何工作的了

您还需要一个新的(私有)构造函数来创建新的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;
}
private Q(int c,LinkedList ll){
这个容量=c;
this.ll=ll;
}
公共Q拆分(){
List secondHalf=this.ll.subList(this.ll.size()/2,this.ll.size());
Q newQ=newQ(this.capacity,newlinkedlist(secondHalf));
后半部分。清除();
返回newQ;
}

为什么不使用我的问题是我需要返回一个Q对象,但我有一个LinkedList。在
Q
中创建一个方法来修改LinkedList什么是
容量
,它是如何在两个Q之间“分割”的?