Java中的动态变量名称

时间:2012-06-02 16:54:44

标签: java arraylist hashmap dynamic-variables

我正在从逗号分隔文件中读取并将内容拆分为数组。我在while循环中执行此操作,因此我希望我的数组动态地具有不同的名称,因为文件中的最后一行最终会覆盖我的数组内容。下面是我所涉及代码的一个片段。

  TextView txt1;
  TextView txt2;

  Scanner in = new Scanner(result);
  in.nextLine(); //skip first line

  while(in.hasNextLine()){
    String line = in.nextLine();
    String []dataset = line.split(",");//store values in array

    txt1.setText(dataset[4]);//Should be 5th element of first line
    txt2.setText(dataset[4]);//Should be 5th element of second line
  }

从上面的代码中可以看出,我想将txt1的值设置为文件第一行中的val,类似于txt2。我读HashMaps或Maps或ArrayList会帮助我,但我不知道如何实现这一点。

3 个答案:

答案 0 :(得分:3)

您需要将数据集数组添加到列表中。所以,在你的while循环之前:

List datalist = new ArrayList();

然后,在:

之后
String []dataset = line.split(",");//store values in array

添加:

datalist.add(dataset);

答案 1 :(得分:3)

如果我理解你想要正确做什么,那么你希望txt1等于第一行数组中的第5个元素,而txt2要获得2ed行上第5个元素的文本(你的注释是3ed元素但是代码拉着第5个。

这可以通过条件和计数器来实现。

Scanner in = new Scanner(result);
   in.nextLine(); //skip first line
   int count = 0;
   while(in.hasNextLine()){

      String line = in.nextLine();
      String []dataset = line.split(",");//store values in array
      if (count == 0){
          txt1.setText(dataset[4]);//Should be 3 element of first line
      }else if (count ==1){
          txt2.setText(dataset[4]);//Should be 3 element of second line
      }
    count++;
   }
  }

编辑:

所以现在我知道你想要一个数组数组,设置很简单。如果你不知道你手头处理的数据量,外部数组应该是可变的。

ArrayList<String[]> dataSet = new ArrayList(10000)//number should be a guess at the amount of data
Scanner in = new Scanner(result);
   in.nextLine(); //skip first line
   while(in.hasNextLine()){

      String line = in.nextLine();
      String []dataset = line.split(",");//store values in array
      dataSet.add(dataset);
   }
   txt1.setText(dataSet.get(0)[4]);
   txt2.setText(dataSet.get(1)[4]);
  }

如果你愿意,你也可以创建这些文本标签,并以类似的方式将handels存储到它们中,并随时设置文本。

答案 2 :(得分:0)

对迈克尔的帖子发表评论,但没有足够的空间!如果您期望从输入中获得任意数量的行,并希望在循环之外处理它们,您可以将迈克尔的方法与我的方法结合起来并最终得到:

   Scanner in = new Scanner(result);
   in.nextLine(); //skip first line

   List txtList = new ArrayList(); //create list

   while(in.hasNextLine()) {
     String line = in.nextLine();
     String[] dataset = line.split(","); //store values in array

     Text txt1 = new Text(); //assuming txt1 is an instance of "Text"
     txt1.setText(dataset[4]); //Should be 5th element of first line

     txtList.add(txt1); //add 5th element of each line to list
   }

   /*
    * txtList now contains instance of Text containing the 5th value from each
    * line of input
    */