Java - 如何存储输入流中的最新字符串?

标签 java string arraylist inputstream

我有一个输入流,它每 1 秒为我提供一个新字符串。我想存储最近的 25 个字符串以供随时访问。我在 Java 中工作,不想使用公共(public)库之外的任何东西。我更愿意为此实现创建一个单独的类。

举个例子:

String a = "string a";
String b = "string b";
String c = "string c";
...

storedStrings[0] = c;
storedStrings[1] = b;
storedStrings[2] = a;

当 String d = "string d"到达时,我希望 storedStrings 像这样移动:

storedStrings[0] = d;
storedStrings[1] = c;
storedStrings[2] = b;
storedStrings[3] = a;

而且当我加载了25个字符串后,我就不再关心String a的值了,应该丢弃掉,以免占用内存。我试过 ArrayList 但没有成功。这是 Vector 的用例吗?

请指出正确的方向!

使用 LinkedList 更新我实现的解决方案:

public static void addToQueue(String s){
         if (list == null) list = new LinkedList<>();
           list.addFirst(s);
           System.out.println(s);
           if (list.size() > 25) {
           list.removeLast();
           }
}

最佳答案

使用链表可以很容易地完成:

   LinkedList<String> list = new LinkedList<>();
   list.addFirst("your new string");
   list.removeLast();

或者只是通过以下方式扩展 List 的任何东西(这也适用于 ArrayList):

   List<String> list = new LinkedList<>();
   list.add(0,"your new string");
   list.remove(list.size()-1);

或者你可以使用队列

    Queue<String> que = new LinkedList<>();
    que.add("your new string");
    que.remove();

关于Java - 如何存储输入流中的最新字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19556020/

相关文章:

javascript - 如何使用JavaScript将字符串转换为数值(应该是可逆的)?

java - 如何创建对象列表的摘要?

java - 使对象的字段对于数组列表中存储的每个对象都是唯一的

java.text.SimpleDateFormat 不是线程安全的

java - 如何配置eclipse以保持这种代码格式?

java -//noinspection ForLoopReplaceableByForEach 是什么意思?

java - 为什么我会收到这个结果? java

java - 使用 onkeydown 方法或覆盖 onbackbuttonpressed 时,Android 后退按钮会卡住

JavaScript - 替换和创建变量

java - 如何在最后一个foreach项目中添加字符串?