2014-10-03 2 views
2

В моем коде используется HashSet, чтобы не дублировать записи, сохраненные в наборе. Я хочу реализовать предупреждение для пользователя, который вводит те же данные или строку, которые уже сохранены. Это что-то, что можно сделать? Я взял Java уже 2 дня, и я буду благодарен за любые советы.Предупреждать пользователя, если элемент уже существует в HashSet

Вот мой код:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.new_layout); 

    aButton = (Button) this.findViewById(R.id.button1); 
    text2 = (TextView) this.findViewById(R.id.textView1); 

    aButton.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      list.add("Books"); 
      list.add("Newspapers"); 
      list.add("Magazines"); 
      String listString = ""; 

      for (String s : list) { 
       listString += s + " - "; 
      } 
      text2.setText(listString); 
      } 
     }); 

    sButton = (Button) this.findViewById(R.id.button2); 
    eText = (EditText) this.findViewById(R.id.editText1); 

    sButton.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View view) { 

      Log.v("EditText", eText.getText().toString()); 
      list.add(eText.getText().toString()); 
     } 
    }); 
    } 
} 
+3

Что такое HashSet? – Makoto

+0

Посмотрите на AlertDialog в документации на Android. Кроме того, есть много хороших примеров для StackOverflow для использования AlertDialogs. –

+3

Я не вижу в вашем коде 'HashSet'. –

ответ

2

метод HashSet в add() возвращает false, если не был фактически добавлен элемент, то есть он уже был там. Предполагая, что list является вашим HashSet, вы можете написать:

if (!list.add(eText.getText().toString())) { 
    // display alert 
} 
+0

Отлично! Спасибо Ян Ван ден бош – user3078406

0

Вы должны проверить HashSet, если он содержит значение, прежде чем добавить. Затем вы можете показать сообщение, если оно уже присутствует, или добавить его, если нет.

Пример кода:

HashSet val; 
// .... 
if(val.contains(newValue)){ 
    //show alert; 
} else { 
    val.add(newValue); 
} 

Реальность состоит в том, что вы теряете некоторую часть того, почему вы хотите использовать HashSet в первую очередь.

0

Так что я предполагаю, что ваш HashSet названный «список» определен где-то еще в коде.

Независимо от того, метод add класса HashSet возвращает логическое значение. Он вернет true, если он может добавить новый элемент в набор, false, если он уже установлен.

Так что вам просто нужно использовать что-то вроде;

if(list.add(eText.getText().toString())) { 
    //it has been added to the list 
} else { 
    // show an alert 
} 

смотрите документацию Java для более ... http://docs.oracle.com/javase/7/docs/api/java/util/HashSet.html

+0

Да !. Ты прав. Хэш-набор определяется выше как глобальный. Я попробую это и вернусь. Спасибо за вашу помощь. – user3078406

Смежные вопросы