您好我已经创建了使用HashSet数组的代码。我是Java编程的新手,我想知道如何完成这两项任务:
*从HashSet数组中按索引获取项目 *显示列表中每个项目的平均长度
我的代码并不长,所以我在这里粘贴整个代码。谢谢你的帮助。
public class MainActivity extends Activity {
Button aButton; // Global Scope
Button sButton;
TextView text2;
EditText eText;
HashSet<String> list = new HashSet<String>();
@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);
//Clickable Saved Input will display alert
text2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Complete!", Toast.LENGTH_LONG).show();
}
});
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());
if( !list.add(eText.getText().toString()) )
{
System.out.println("Not Unique Item");
Toast.makeText(getApplicationContext(), "Already Saved!", Toast.LENGTH_LONG).show();
} else
{
System.out.println("Unique Entry Added");
Toast.makeText(getApplicationContext(), "Saved To Items.", Toast.LENGTH_LONG).show();
}
}
});
}
}
答案 0 :(得分:10)
Set不是你想要的,因为:
更好的选择是List,例如ArrayList
,它允许任何(即重复的)值,并且可以使用list.get(i)
通过索引访问。
答案 1 :(得分:0)
当您不希望在集合中允许重复值时,应使用HashSet。在HashSet中,您将无法通过索引查找值。如果您仍然希望找到除了使用迭代器之外没有其他选项的元素,它将遍历Hashset并从Hashset中逐个给出元素。
你想通过索引找到你应该使用ArrayList的元素。
有两种方法可以迭代HashSet -
HashSet <String> newset = new HashSet <String>();
// populate hash set
newset.add("A");
newset.add("BB");
newset.add("CCC");
// create an iterator
Iterator iterator = newset.iterator();
// check values
while (iterator.hasNext()){
System.out.println("Value: "+iterator.next() + " ");
}
第二种方法是使用for循环 -
for (String s : newset ) {
System.out.println("Value: " +s);
}