将字符串“temp”值的每个新值添加到 ArrayList 而不覆盖以前的“temp”

Posted

技术标签:

【中文标题】将字符串“temp”值的每个新值添加到 ArrayList 而不覆盖以前的“temp”【英文标题】:Adding each new value of a String 'temp' value to ArrayList without overwriting previous 'temp' 【发布时间】:2015-07-05 04:51:45 【问题描述】:

我的输入来自使用DataInputSteamsocket,因为我可以将多个不同的字符串值都分配给同一个clientDayOfWeek 字符串,所以我无法弄清楚如何将所有进入的字符串值保存到相同的 ArrayList 而不替换最后一个值。如果可能的话,我也希望不要重复。

       Socket socket = null;
       DataInputStream dataInputStream = null;
       dataInputStream = new DataInputStream(
                              socket.getInputStream());

       String clientDayOfWeek = dataInputStream.readUTF();
       ArrayList<String> ar = new ArrayList<String>();
       String temp = clientDayOfWeek;
       ar.add(temp);
       System.out.print("Items in list: "+ ar);

【问题讨论】:

你可以使用 Java 8 流 API 吗? 我无法理解的是为什么你将某些东西分配给一个变量(clientDayOfWeek),然后将它再次分配给另一个变量(temp),然后将它添加到一个集合中。将dataInputStream.readUTF() 存储在ar List 中不是很简单吗? 在全球位置声明你的数组列表并尝试添加? 别了,我的朋友!这只是我们众所周知的共享状态的开始。努力尝试,找到更好/更好的解决方案,并始终(如果可能)返回不可修改的集合 【参考方案1】:

感谢 Prasaanth,那是我做错了。

我需要我的ArrayList&lt;String&gt; ar = new ArrayList&lt;String&gt;(); 是全局的,并在我的方法中将其余部分简化如下。

dataInputStream = new DataInputStream(
                        socket.getInputStream());
   ar.add(dataInputStream.readUTF());
   System.out.print("ar: "+ar);

【讨论】:

以上是关于将字符串“temp”值的每个新值添加到 ArrayList 而不覆盖以前的“temp”的主要内容,如果未能解决你的问题,请参考以下文章

array_map() 函数

php array_map与array_walk使用对比

php中array_map和array_walk的使用对比

array_map常用技巧

将字符添加到熊猫列中每个值的开头

PHP array_map 一个有趣的函数