用java使用3个队列分别保留手机最近10个“未接来电”、“已接来电”、“以拨电话”。
时间: 2023-08-31 13:22:11 浏览: 78
### 回答1:
可以使用Java的Queue接口来实现队列,具体实现可以参考以下示例代码:
```java
import java.util.LinkedList;
import java.util.Queue;
public class PhoneCallQueue {
private Queue<String> missedCalls;
private Queue<String> receivedCalls;
private Queue<String> dialedCalls;
public PhoneCallQueue() {
missedCalls = new LinkedList<>();
receivedCalls = new LinkedList<>();
dialedCalls = new LinkedList<>();
}
// 添加未接来电
public void addMissedCall(String number) {
missedCalls.offer(number);
if (missedCalls.size() > 10) {
missedCalls.poll();
}
}
// 添加已接来电
public void addReceivedCall(String number) {
receivedCalls.offer(number);
if (receivedCalls.size() > 10) {
receivedCalls.poll();
}
}
// 添加已拨电话
public void addDialedCall(String number) {
dialedCalls.offer(number);
if (dialedCalls.size() > 10) {
dialedCalls.poll();
}
}
// 获取未接来电队列
public Queue<String> getMissedCalls() {
return missedCalls;
}
// 获取已接来电队列
public Queue<String> getReceivedCalls() {
return receivedCalls;
}
// 获取已拨电话队列
public Queue<String> getDialedCalls() {
return dialedCalls;
}
}
```
使用时,可以先创建一个PhoneCallQueue对象,然后调用它的addMissedCall()、addReceivedCall()、addDialedCall()方法添加相应的电话号码,然后通过调用getMissedCalls()、getReceivedCalls()、getDialedCalls()方法获取对应的队列。例如:
```java
PhoneCallQueue phoneCallQueue = new PhoneCallQueue();
phoneCallQueue.addMissedCall("1234567890");
phoneCallQueue.addReceivedCall("2345678901");
phoneCallQueue.addDialedCall("3456789012");
Queue<String> missedCalls = phoneCallQueue.getMissedCalls();
Queue<String> receivedCalls = phoneCallQueue.getReceivedCalls();
Queue<String> dialedCalls = phoneCallQueue.getDialedCalls();
```
最后,可以通过遍历队列来查看其中的电话号码。
### 回答2:
要使用Java来实现这个功能,首先我们需要定义一个手机类,该类包含手机的基本信息和三个队列用于保存最近的未接来电、已接来电和已拨电话。代码如下:
```java
import java.util.LinkedList;
import java.util.Queue;
public class Phone {
private String brand;
private String model;
private Queue<String> missedCalls;
private Queue<String> receivedCalls;
private Queue<String> dialedCalls;
public Phone(String brand, String model) {
this.brand = brand;
this.model = model;
missedCalls = new LinkedList<>();
receivedCalls = new LinkedList<>();
dialedCalls = new LinkedList<>();
}
public void addMissedCall(String caller) {
missedCalls.add(caller);
if (missedCalls.size() > 10) {
missedCalls.poll();
}
}
public void addReceivedCall(String caller) {
receivedCalls.add(caller);
if (receivedCalls.size() > 10) {
receivedCalls.poll();
}
}
public void addDialedCall(String receiver) {
dialedCalls.add(receiver);
if (dialedCalls.size() > 10) {
dialedCalls.poll();
}
}
public Queue<String> getMissedCalls() {
return missedCalls;
}
public Queue<String> getReceivedCalls() {
return receivedCalls;
}
public Queue<String> getDialedCalls() {
return dialedCalls;
}
public static void main(String[] args) {
Phone phone = new Phone("Apple", "iPhone 12");
phone.addMissedCall("Tom");
phone.addMissedCall("Alice");
phone.addReceivedCall("John");
phone.addDialedCall("Mike");
System.out.println("最近的未接来电:");
Queue<String> missedCalls = phone.getMissedCalls();
for (String caller : missedCalls) {
System.out.println(caller);
}
System.out.println("最近的已接来电:");
Queue<String> receivedCalls = phone.getReceivedCalls();
for (String caller : receivedCalls) {
System.out.println(caller);
}
System.out.println("最近的已拨电话:");
Queue<String> dialedCalls = phone.getDialedCalls();
for (String receiver : dialedCalls) {
System.out.println(receiver);
}
}
}
```
以上代码定义了一个Phone类,其中包含了三个队列用于保存最近的未接来电、已接来电和已拨电话。通过addMissedCall、addReceivedCall和addDialedCall方法,可以添加最近的未接来电、已接来电和已拨电话。每个队列的长度最多为10,并使用poll方法来删除多余的元素。通过getMissedCalls、getReceivedCalls和getDialedCalls方法,可以获取最近的未接来电、已接来电和已拨电话队列。
在main方法中,我们创建了一个Phone对象,并添加了一些示例的未接来电、已接来电和已拨电话。然后,我们通过getMissedCalls、getReceivedCalls和getDialedCalls方法获取最近的未接来电、已接来电和已拨电话,并遍历打印出来。
### 回答3:
使用Java中的队列数据结构可以很方便地实现保留手机最近10个“未接来电”、“已接来电”、“已拨电话”的功能。
首先,我们可以使用`LinkedList`类作为队列的基础数据结构,该类实现了`Queue`接口实现了队列的相关操作。
针对这三个队列,我们可以先定义它们的容量为10,即最多只能存储最近10个记录。具体实现如下:
```java
import java.util.LinkedList;
import java.util.Queue;
public class PhoneCallQueue {
private Queue<String> missedCalls;
private Queue<String> receivedCalls;
private Queue<String> dialedCalls;
public PhoneCallQueue() {
missedCalls = new LinkedList<>();
receivedCalls = new LinkedList<>();
dialedCalls = new LinkedList<>();
}
public void addMissedCall(String callerName) {
if (missedCalls.size() >= 10) {
missedCalls.poll(); // 移除最旧的未接来电
}
missedCalls.offer(callerName); // 将新的未接来电加入队列
}
public void addReceivedCall(String callerName) {
if (receivedCalls.size() >= 10) {
receivedCalls.poll(); // 移除最旧的已接来电
}
receivedCalls.offer(callerName); // 将新的已接来电加入队列
}
public void addDialedCall(String calleeName) {
if (dialedCalls.size() >= 10) {
dialedCalls.poll(); // 移除最旧的已拨电话
}
dialedCalls.offer(calleeName); // 将新的已拨电话加入队列
}
public Queue<String> getMissedCalls() {
return missedCalls;
}
public Queue<String> getReceivedCalls() {
return receivedCalls;
}
public Queue<String> getDialedCalls() {
return dialedCalls;
}
public static void main(String[] args) {
PhoneCallQueue phoneCallQueue = new PhoneCallQueue();
phoneCallQueue.addMissedCall("张三");
phoneCallQueue.addMissedCall("李四");
phoneCallQueue.addReceivedCall("王五");
phoneCallQueue.addDialedCall("赵六");
System.out.println("未接来电: " + phoneCallQueue.getMissedCalls());
System.out.println("已接来电: " + phoneCallQueue.getReceivedCalls());
System.out.println("已拨电话: " + phoneCallQueue.getDialedCalls());
}
}
```
以上代码定义了一个`PhoneCallQueue`类,其中`missedCalls`、`receivedCalls`和`dialedCalls`分别表示未接来电、已接来电和已拨电话的队列。通过`addMissedCall`、`addReceivedCall`和`addDialedCall`方法可以添加新的记录。如果队列已满,会自动移除最旧的记录。同时,`getMissedCalls`、`getReceivedCalls`和`getDialedCalls`方法可以获取当前队列的内容。
在`main`方法中,我们可以对这三个队列进行一些操作,并将结果输出到控制台。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)