簡體   English   中英

如何在ArrayList中分別使用數據?

[英]How to use data separately in an ArrayList?

我正在用Java編寫一個程序,該程序將從文本文件中讀取數據到Arraylist中。 文本文件有10行數據,每行包含以下格式的數據:“ Integer1-String1:String2”例如:“ 123-ABC:DEFG”。我想這樣保存Integer1,String1和String2 :

int listNumber; //This would be Integer1
String listData1; //This would be String1
String listData2; //This would be String2

所以我的問題是,如何在不將每種類型的數據保存到單獨的數組中的情況下執行此操作。 我在想像這樣的事情,但是它不起作用:

int givenNumber = Integer.parseInt(myArrayList.substring(0, "-"));

這是我到目前為止的內容:

final String INPUT = "data.txt";
Scanner input = new Scanner(new FileReader(INPUT));

ArrayList<String> myArrayList = new ArrayList<String>();

while (input.hasNext()){
                myArrayList.add(input.next());
            }

for (int i = 0; i < myArrayList.size(); i++) {
                int givenNumber = Integer.parseInt(myArrayList.substring(0, "-"));
                System.out.println(myArrayList.get(i)); //Print the all data
            }

抱歉,如果此信息尚不清楚,但是我是Java的新手,並且不知道對其進行更好的描述。

您可能要為數據創建一個幫助器類:

class ListData {
   int listNumber;
   String listData1;
   String listData2;

   ListData(int listNumber, String listData1, String listData2) {
      this.listNumber = listNumber;
      this.listData1 = listData1;
      this.listData2 = listData2;
   }

   @Override
   public String toString(){
       return listNumber + "-" + listData1 + ":" + listData2;
   }
}

然后將其存儲在ListData數組中:

List<ListData> datalist = new ArrayList<>();
datalist.add(new ListData(listNumber, listData1, listData2);

編輯:您的實現不解析掃描儀中的數據。 以下代碼段逐行分析“ Scanner輸入,將其添加到列表中。

while (input.hasNext()) {
   // Read each line from the scanner
   String input = input.next();

   // Split data on two delimiters '-' and ':'
   String[] data = input.split("-|:");
   int listNumber = Integer.parseInt(data[0]);
   String listData1 = data[1];
   String listData2 = data[2];

   // Add to the datalist
   datalist.add(new ListData(listNumber, listData1, listData2));
}

您可以創建一個由ArrayLists,2d數組組成的ArrayList,並且該Arraylist中的每個Arraylist都可以設置為差異類型。 例如:

  ArrayList<ArrayList> a = new ArrayList<ArrayList>();
  a.add(new ArrayList<Integer>());
  a.add(new ArrayList<String>());
  a.add(new ArrayList<String>());

創建一個存儲所有三個值的新類。 在同一文件夾中名為“ LineEntry.java”的新文件中創建類。

public class LineEntry{
    int listNumber; //This would be Integer1
    String listData1; //This would be String1
    String listData2; //This would be String2
    public LineEntry(String line){
         // You have to check wrong input cases as well.
         String [] token = line.split("-|:");  
         listNumber = Integer.parseInt(token[0]);

         listData1 = token[1];
         listData2 = token[2];
    } 
} 

並在讀取每一行時從此類創建對象。 將對象放在ArrayList中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM