如何从String获取Integer列表

时间:2012-06-13 07:08:59

标签: java

我的字符串包含由空格分隔的Integer

String number = "1 2 3 4 5 "

如何从此字符串中获取Integer的列表?

13 个答案:

答案 0 :(得分:17)

您可以使用Scanner一次读取一个整数字符串。

Scanner scanner = new Scanner(number);
List<Integer> list = new ArrayList<Integer>();
while (scanner.hasNextInt()) {
    list.add(scanner.nextInt());
}

答案 1 :(得分:7)

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(toList());

答案 2 :(得分:6)

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]);

答案 3 :(得分:6)

在Java 8中,您可以使用流并以更紧凑的方式获得转换:

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

答案 4 :(得分:1)

将其拆分为空格,获取一个数组,然后将其转换为列表。

答案 5 :(得分:1)

首先,使用split()方法将String转换为String数组。

其次,使用getInteger()方法将String转换为Integer。

答案 6 :(得分: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);

答案 7 :(得分: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);
}

答案 8 :(得分:1)

我想引入tokenizer类来分割任何分隔符。输入字符串只扫描一次,我们有一个没有额外循环的列表。

    String value = "1, 2, 3, 4, 5";
    List<Long> list=new ArrayList<Long>();
    StringTokenizer tokenizer = new StringTokenizer(value, ",");
    while(tokenizer.hasMoreElements()) {
        String val = tokenizer.nextToken().trim();
        if (!val.isEmpty()) list.add( Long.parseLong(val) );
    }

答案 9 :(得分:1)

使用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());

答案 10 :(得分: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));

答案 11 :(得分: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();
}

答案 12 :(得分: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());

或者你可以用&#34;&#34;。

来喂它