Agregar cada nuevo valor de un valor 'temp' de String a ArrayList sin sobrescribir 'temp' anterior

Mi entrada proviene de unsocket utilizandoDataInputSteam y porque puedo tener varios valores de cadena diferentes asignados todos a la mismaclientDayOfWeek cadena, no puedo entender cómo guardar todos los valores de cadena que entran en la misma ArrayList sin reemplazar el último valor. También me gustaría no hay duplicados si es posible.

       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);

Respuestas a la pregunta(1)

Su respuesta a la pregunta