Adicionando cada novo valor de um valor de String 'temp' a ArrayList sem substituir o 'temp' anterior

Minha opinião vem de umsocket usandoDataInputSteam e porque eu posso ter vários valores diferentes de String, todos atribuídos à mesmaclientDayOfWeek string, não consigo descobrir como salvar todos os valores de string que entram no mesmo ArrayList sem substituir o último valor. Eu também não gostaria de duplicatas, se possível.

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

questionAnswers(1)

yourAnswerToTheQuestion