簡體   English   中英

Java,從字符串讀入ArrayList

[英]Java, read from a String into an ArrayList

我有一個內容為12345的字符串。

將這些單個數字讀入整數ArrayList的最佳方法是什么? 像這樣:

{1, 2, 3, 4, 5}

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

String data = getData();
this.points=new ArrayList<Integer>();
for (int i=0; i<data.length(); i++) {
    int pt = Integer.parseInt(data.valueOf(i));
    this.points.add(new Integer(pt));
}

問題是我得到了[(0),(1),(2),...]而不是所需的數字。

您需要使用charAt(i)方法, valueOf(i)返回valueOf(i)的String值,而不是i char

您可以使用String.charAt從該位置獲取相應字符作為char 要將其添加到列表中,您需要轉換為int

String data = getData();
this.points=new ArrayList<Integer>();
List<Integer> list = new ArrayList<Integer>();

for (int i = 0; i < data.length(); i++) {
    this.points.add(Character.getNumericValue(data.charAt(i)));
}

該解決方案應能有效地使您的內存分配最小。 請注意,您需要確保數據上僅存在數值。

String data = getData();
this.points = new ArrayList<Integer>(); //if this is a field you should use points.clear() instead.

for (int i=0; i<data.length(); i++) {
  this.points.add(Characacter.getNumericValue(data.charAt(i)));
}

您的問題是您試圖在索引上使用String.valueOf方法,該方法實際上將在每次迭代中返回i的值

Integer.parseInt將取整數; 您想逐位接受它。 為此,請改用Character.getNumericValue

String data = getData();
this.points=new ArrayList<Integer>();
for (int i=0; i<data.length(); i++) {
    int pt = Character.getNumericValue(data.charAt(i));
    this.points.add(new Integer(pt));
}

使用data.charAt()代替valueOf 因此,您的代碼應類似於:

        String data = getData();
        for (int i = 0; i < data.length(); i++) {
            int pt = Integer.parseInt(data.valueOf(data.charAt(i)));
            this.points.add(new Integer(pt));
        }
        for (int i = 0; i < points.size(); i++) {
            System.out.println(this.points.get(i));

        }

嘗試這個

String data = getData();
this.points=new ArrayList<Integer>();
for (int i = 0; i < data.length(); i++) {
    this.points.add(Integer.parseInt(s.charAt(i) + ""));
}

您將獲得所有這樣的整數:

String data = "254980";
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < data.length(); i++) {
    list.add(new Integer(data.substring(i,i+1)));
}

測試:

for (Integer integer : list) {
    System.out.print(integer);
}

版畫

2 
5 
4 
9 
8 
0

暫無
暫無

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

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