gpt4 book ai didi

java - CircularFifoQueue 在方法内部不起作用,可以使用什么代替?

转载 作者:行者123 更新时间:2023-11-30 06:28:59 24 4
gpt4 key购买 nike

我需要编写一个方法,让它始终存储最后 10 个(新闻集)元素,并且只存储 10 个。我尝试使用 CircularFifoBuffer。它可以完美地使用,如下所示:

 import java.util.ArrayList;
import java.util.List;
import java.util.Queue;
import org.apache.commons.collections4.queue.CircularFifoQueue;

public class Main {

public static void main(String[] args) {

Queue<Integer> fifo = new CircularFifoQueue<Integer>(3);
fifo.add(11);
fifo.add(22);
fifo.add(33);
fifo.add(44);
fifo.add(55);
System.out.println(fifo); // [33, 44, 55]

但是在方法内部使用时它不起作用:

import java.util.ArrayList;
import java.util.List;
import java.util.Queue;
import org.apache.commons.collections4.queue.CircularFifoQueue;

public class TV {

public int channelNumber = 11;

public int getChannelNumber() {
return channelNumber;
}

public void addToChannelsHistory(int channnelNumber) {
Queue<Integer> fifo = new CircularFifoQueue<Integer>(3);
fifo.add(channnelNumber);
System.out.print(fifo);
}
}

你能帮忙用什么来代替吗?

最佳答案

您必须使用属性的概念,属性是类的成员,它是数据,而不是方法:

public class TV {

private final Queue<Integer> fifo = new CircularFifoQueue<Integer>(3);

public Queue<Integer> getChannelNumbers() {
return fifo;
}

public Integer getChannelNumber() {
return fifo.isEmpty() ? null : fifo.peek();
}

public void addToChannelsHistory(int channnelNumber) {
fifo.add(channnelNumber);
}

public String toString() {
return fifo.toString();
}

public static void main( String[] args ) {
TV tv = new TV();
tv.addToChannelsHistory(11);
tv.addToChannelsHistory(22);
tv.addToChannelsHistory(33);
tv.addToChannelsHistory(44);
tv.addToChannelsHistory(55);
System.out.print( tv );
}
}

关于java - CircularFifoQueue 在方法内部不起作用,可以使用什么代替?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46510807/

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