将字符串“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 【问题描述】:我的输入来自使用DataInputSteam
的socket
,因为我可以将多个不同的字符串值都分配给同一个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<String> ar = new ArrayList<String>();
是全局的,并在我的方法中将其余部分简化如下。
dataInputStream = new DataInputStream(
socket.getInputStream());
ar.add(dataInputStream.readUTF());
System.out.print("ar: "+ar);
【讨论】:
以上是关于将字符串“temp”值的每个新值添加到 ArrayList 而不覆盖以前的“temp”的主要内容,如果未能解决你的问题,请参考以下文章