JAVA使用组合技术对Linkedlist类进行封装分别实现一个站类和队列类并编写测试类进行测试代码
时间: 2024-10-25 08:09:33 浏览: 16
JavaCodingTestStudy:收集Java编码测试解决方案进行研究。 使用CodeUp,程序员等。
在Java中,我们可以使用组合(Composition)来将LinkedList类封装到Station和Queue类中。组合是一种设计模式,它将一个类嵌套在另一个类内部,并依赖于那个类的功能。以下是简单的例子:
首先,我们创建一个`Node`类作为LinkedList的基本元素:
```java
public class Node {
int value;
Node next;
public Node(int value) {
this.value = value;
this.next = null;
}
}
```
然后,我们创建`Station`类,它可以包含一个LinkedList:
```java
public class Station {
private LinkedList<Node> items;
public Station() {
this.items = new LinkedList<>();
}
// 添加和删除节点的方法...
public void addItem(Node item) {
items.add(item);
}
public void removeLastItem() {
if (!items.isEmpty()) {
items.removeLast();
}
}
// 其他站相关的操作...
}
```
接下来,我们创建`Queue`类,它也使用LinkedList,但是通常只允许在队列的一端添加和删除元素(先进先出,FIFO):
```java
import java.util.LinkedList;
public class Queue {
private LinkedList<Node> queueItems;
public Queue() {
this.queueItems = new LinkedList<>();
}
public void enqueue(Node item) {
queueItems.addFirst(item);
}
public Node dequeue() {
return queueItems.poll(); // 如果队列非空,则移除第一个元素
}
// 其他队列操作...
}
```
最后,我们可以创建一个测试类来验证这两个类的功能:
```java
import org.junit.jupiter.api.Test;
public class QueueAndStationTest {
@Test
public void testQueueOperations() {
Queue queue = new Queue();
queue.enqueue(new Node(1));
queue.enqueue(new Node(2));
assertEquals(queue.dequeue(), new Node(1)); // 应该返回值为1的节点
Station station = new Station();
station.addItem(new Node(3));
station.removeItem(); // 应该删除最后一个添加的节点
// 更多测试用例...
}
}
```
在这个例子中,`Station`和`Queue`都是通过LinkedList进行封装的,实现了各自的特定功能。测试类则用于验证它们的行为是否符合预期。
阅读全文