如果字符串存在则不添加字符串

0 java sockets string inputstream arraylist

我的输入来自socketusing DataInputSteam,因为我可以将多个不同的字符串值全部分配给同一个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);
Run Code Online (Sandbox Code Playgroud)

Ell*_*sch 6

您可以检查是否List.contains(Object)已经String喜欢,

List<String> ar = new ArrayList<>();
if (!ar.contains(clientDayOfWeek)) {
    ar.add(clientDayOfWeek);
}
Run Code Online (Sandbox Code Playgroud)

或者,只需使用 a LinkedHashSet(假设您想保留插入顺序),例如

Set<String> ar = new LinkedHashSet<>();
ar.add(clientDayOfWeek);
Run Code Online (Sandbox Code Playgroud)

如果您不需要保留订单,我更喜欢TreeSet.