使用java的栈实现以3个队列分别保留手机最近10个“未接来电”、“已接来电”、“以拨电话”。
时间: 2023-11-05 19:11:32 浏览: 46
下面是使用Java的栈实现以3个队列分别保留手机最近10个“未接来电”、“已接来电”、“以拨电话”的示例代码:
```java
import java.util.Stack;
public class PhoneCallQueue {
private final int MAX_SIZE = 10;
private Stack<String> missedCallStack;
private Stack<String> receivedCallStack;
private Stack<String> dialedCallStack;
public PhoneCallQueue() {
missedCallStack = new Stack<>();
receivedCallStack = new Stack<>();
dialedCallStack = new Stack<>();
}
public void addMissedCall(String phoneNumber) {
if (missedCallStack.size() >= MAX_SIZE) {
missedCallStack.remove(0);
}
missedCallStack.push(phoneNumber);
}
public void addReceivedCall(String phoneNumber) {
if (receivedCallStack.size() >= MAX_SIZE) {
receivedCallStack.remove(0);
}
receivedCallStack.push(phoneNumber);
}
public void addDialedCall(String phoneNumber) {
if (dialedCallStack.size() >= MAX_SIZE) {
dialedCallStack.remove(0);
}
dialedCallStack.push(phoneNumber);
}
public void printMissedCalls() {
System.out.println("Missed Calls:");
for (int i = missedCallStack.size() - 1; i >= 0; i--) {
System.out.println(missedCallStack.get(i));
}
}
public void printReceivedCalls() {
System.out.println("Received Calls:");
for (int i = receivedCallStack.size() - 1; i >= 0; i--) {
System.out.println(receivedCallStack.get(i));
}
}
public void printDialedCalls() {
System.out.println("Dialed Calls:");
for (int i = dialedCallStack.size() - 1; i >= 0; i--) {
System.out.println(dialedCallStack.get(i));
}
}
}
```
在上面的代码中,我们使用了三个栈分别表示未接来电、已接来电和已拨电话。当一个新的电话进来时,我们将其添加到相应的栈中。如果栈已达到最大大小,则删除最早的电话。最后,我们可以使用`printMissedCalls()`、`printReceivedCalls()`和`printDialedCalls()`方法分别打印未接来电、已接来电和已拨电话的列表。