将Char的ArrayList转换为Int的另一个ArrayList

时间:2012-03-05 14:58:43

标签: java arraylist

这一直困扰着我最后一小时,我觉得我无处可去。

我有一个字符ArrayList,我需要将数字字符转换为整数,并将其放入一个新数组中。所以:

ArrayList<Character> charList contains [5, ,1,5, ,7, ,1,1]

我想获取当前的charList并将内容放入Integer类型的新ArrayList中,显然不包含空格。

ArrayList<Integer> intList contains [5, 15, 7, 11]

现在任何帮助都将不胜感激。

8 个答案:

答案 0 :(得分:3)

首先,从String中的字符中生成charList,然后将该字符串拆分到该空格,最后将每个标记解析为int,如下所示:

char[] chars = new char[charList.size()];
charList.toArray(chars);
String s = new String(chars);
String[] tok = s.split(" ");
ArrayList<Integer> res = new ArrayList<Integer>();
for (String t : tok) {
    res.add(Integer.parseInt(t));
}

答案 1 :(得分:0)

for(Character ch : charList) {
    int x = Character.digit(ch, 10);
    if (x != -1) {
         intList.add(x);
    }
 }

答案 2 :(得分:0)

您想将每个角色更改为相应的整数吗?

若有,

Integer.parseInt(String)

将字符串转换为int和

Character.toString(char)

将字符转换为字符串

如果你想将多个字符转换成一个整数,你可以单独转换所有字符,然后做这样的事情

int tens = Integer.parseInt(Character.toString(charList.get(i)));
int ones = Integer.parseInt((Character.toString(charList.get(i+1)));
int value = tens * 10 + ones;
intList.add(i, value);

答案 3 :(得分:0)

如果看到

,请遍历char数组
  • 一个数字:将其附加到字符串(构建器)
  • 空格:解析当前字符串(构建器)

这是一个简单的实现:

StringBuilder sb = new StringBuilder();
List<Character> charList = getData();  // get Values from somewhere
List<Integer> intList = new ArrayList<Integer>();

for (char c:charList) {
  if (c != ' ') {
     sb.append(c);
  } else {
     intList.add(Integer.parseInt(sb.toString());
     sb = new StringBuilder();
  }
}

答案 4 :(得分:0)

public static List<Integer> getIntList(List<Character> cs) {
  StringBuilder buf = new StringBuilder();
  List<Integer> is = new ArrayList<Integer>();
  for (Character c : cs) {
    if (c.equals(' ')) {
      is.add(Integer.parseInt(buf.toString()));
      buf = new StringBuilder();
    } else {
      buf.append(String.valueOf(c));
    }
  }
  is.add(Integer.parseInt(buf.toString()));
  return is;
}


List<Character> cs = Arrays.asList('5', ' ', '1', '5', ' ', '7', ' ', '1', '1');
List<Integer> is = getIntList(cs); // => [5, 15, 7, 11]

答案 5 :(得分:0)

迭代字符列表,将它们解析为整数并添加到整数列表中。您应该注意NumberFormatException。这是一个完整的代码:

Character[] chars = new Character[]{'5',' ','1','5',' ','7',' ','1','1'};
List<Character> charList = Arrays.asList(chars);
ArrayList<Integer> intList = new ArrayList<Integer>();

for(Character ch : charList)
{
    try
    { intList.add(Integer.parseInt(ch + "")); }
    catch(NumberFormatException e){}
}

如果您已经填充了字符列表,则可以跳过上面代码的前两行。

答案 6 :(得分:0)

这里是另一个....没有parseInt

        char[] charList = "5 15 7 11 1234 34 55".Trim().ToCharArray();
        List<int> intList = new List<int>();
        int n = 0;
        for(int i=0; i<charList.Length; i++)
        {
            if (charList[i] == ' ')
            {
                intList.Add(n);
                n = 0;
            }
            else
            {
                n = n * 10;
                int k = (int)(charList[i] - '0');
                n += k;
            }
        }

答案 7 :(得分:0)

使用Java8,您可以这样转换:

String str = charList.stream().map(Object::toString).collect(Collectors.joining());
ArrayList<Integer> intList = Arrays.asList(str.split(" ")).stream().map(Integer::parseInt)
                                   .collect(Collectors.toCollection(ArrayList::new));

首先我们收集由&#39;,&#39;分隔的字符。到一个字符串,然后我们将它分成一个数字列表(作为字符串),并从该过滤器的流中我们将每个字符串解析成一个int,然后我们将它们收集到一个新的列表中。