我的代码使用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());
}
});
}
}
答案 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