10

私の文字列にはInteger、スペースで区切られたものが含まれています:

String number = "1 2 3 4 5 "

Integerこの文字列からリストを取得するにはどうすればよいですか?

4

13 に答える 13

23

a を使用しScannerて、文字列を一度に 1 つの整数で読み取ることができます。

Scanner scanner = new Scanner(number);
List<Integer> list = new ArrayList<Integer>();
while (scanner.hasNextInt()) {
    list.add(scanner.nextInt());
}
于 2012-06-13T07:11:35.860 に答える
12
ArrayList<Integer> lst = new ArrayList<Integer>();
for (String field : number.split(" +"))
    lst.add(Integer.parseInt(field));

Java 8 以降の場合:

List<Integer> lst = 
    Arrays.stream(number.split(" +")).map(Integer::parseInt).collect(Collectors.toList());
于 2012-06-13T07:12:47.750 に答える
7
String number = "1 2 3 4 5";
String[] s = number.split("\\s+");

そして、それを使用してリストに追加しますInteger.parseInt(s[index]);

List<Integer> myList = new List<Integer>();
for(int index = 0 ; index<5 ; index++)
             myList.add(Integer.parseInt(s[index]);
于 2012-06-13T07:11:21.193 に答える
3

Java8 Stream API マップとmapToInt関数を使用すると、これを簡単にアーカイブできます。

String number = "1 2 3 4 5";
List<Integer> x = Arrays.stream(number.split("\\s"))
        .map(Integer::parseInt)
        .collect(Collectors.toList());

また

String stringNum = "1 2 3 4 5 6 7 8 9 0";

List<Integer> poolList = Arrays.stream(stringNum.split("\\s"))
        .mapToInt(Integer::parseInt)
        .boxed()
        .collect(Collectors.toList());
于 2018-04-24T10:54:02.070 に答える
1
 String number="1 2 3 4 5";
 List<Integer> l=new ArrayList<Integer>();
 String[] ss=number.split(" ");
 for(int i=0;i<ss.length;i++)
 {
   l.add(Integer.parseInt(ss[i]));
 }

System.out.println(l);
于 2012-06-13T07:17:42.873 に答える
1

配列を使用するだけの簡単なソリューション:

// variables
String nums = "1 2 3 4 5";
// can split by whitespace to store into an array/lits (I used array for preference) - still string
String[] num_arr = nums.split(" ");
int[] nums_iArr = new int[num_arr.length];
// loop over num_arr, converting element at i to an int and add to int array

for (int i = 0; i < num_arr.length; i++) {
    int num_int = Integer.parseInt(num_arr[i])
    nums_iArr[i] = num_int
}

それはかなりそれをカバーしています。それらをコンソールに出力したい場合は、たとえば次のようにします。

// for each loop to output
for (int i : nums_iArr) {
      System.out.println(i);
}
于 2012-06-13T07:24:32.647 に答える
1

まず、split()メソッドを使用して String を String 配列にします。

次に、getInteger()メソッドを使用して文字列を整数に変換します。

于 2012-06-13T07:12:55.727 に答える
0

最初に正規表現を使用して文字列を分割し、次に配列を反復処理してすべての値を目的の型に変換します。

String[] literalNumbers = [number.split(" ");][1]
int[] numbers = new int[literalNumbers.length];

for(i = 0; i < literalNumbers.length; i++) {
    numbers[i] = Integer.valueOf(literalNumbers[i]).intValue();
}
于 2012-06-13T07:14:42.347 に答える
0

spaceで分割し、配列を取得してからリストに変換します。

于 2012-06-13T07:10:37.853 に答える
0

それを分割して、後で反復して、次のように数値に変換できます。

    String[] strings = "1 2 3".split("\\ ");
    int[] ints = new int[strings.length];
    for (int i = 0; i < strings.length; i++) {
        ints[i] = Integer.parseInt(strings[i]);
    }
    System.out.println(Arrays.toString(ints));
于 2012-06-13T07:11:26.403 に答える
0

文字列から整数のリストを取得するためのより一般的な方法が必要だったので、独自の方法を作成しました。私はそれらをチェックしていないので、上記のすべてよりも優れているかどうかはわかりません. ここにあります:

public static List<Integer> getAllIntegerNumbersAfterKeyFromString(
        String text, String key) throws Exception {
    text = text.substring(text.indexOf(key) + key.length());
    List<Integer> listOfIntegers = new ArrayList<Integer>();
    String intNumber = "";
    char[] characters = text.toCharArray();
    boolean foundAtLeastOneInteger = false;
    for (char ch : characters) {
        if (Character.isDigit(ch)) {
            intNumber += ch;
        } else {
            if (intNumber != "") {
                foundAtLeastOneInteger = true;
                listOfIntegers.add(Integer.parseInt(intNumber));
                intNumber = "";
            }
        }
    }
    if (!foundAtLeastOneInteger)
        throw new Exception(
                "No matching integer was found in the provided string!");
    return listOfIntegers;
}

@key パラメータは必須ではありません。メソッドの最初の行を削除すると、削除できます。

    text = text.substring(text.indexOf(key) + key.length());

または、「」でフィードすることもできます。

于 2013-10-22T12:28:19.827 に答える