如果项目已存在于HashSet中,则提醒用户

时间:2014-10-03 04:37:56

标签: java android alert

我的代码使用HashSet,以便不重复保存到集合中的条目。我想为输入已存储的相同数据或字符串的用户实施警报。这是可以做到的吗?我已经用Java 2天了,我将不胜感激任何建议。

这是我的代码:

@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 个答案:

答案 0 :(得分:2)

如果元素实际上没有添加,则HashSet的add ()方法返回false,即它已经在那里。假设list是您的HashSet,您可以写:

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

答案 1 :(得分:0)

在添加HashSet之前,如果它包含值,则需要检查它。然后,您可以显示已存在的消息,或者如果没有则添加消息。

示例代码:

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

现实情况是,您首先要丢失部分原因。

答案 2 :(得分:0)

所以我猜你的HashSet被叫'list'是在代码中的其他地方定义的。

无论如何,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