从HashSet数组中按索引获取项目,并显示列表中每个项目的平均长度

时间:2014-10-03 19:50:09

标签: java arrays

您好我已经创建了使用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();

            }


        }

    });


    }

}

2 个答案:

答案 0 :(得分:10)

Set不是你想要的,因为:

  • 仅设置唯一
  • 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);
}