这一直困扰着我最后一小时,我觉得我无处可去。
我有一个字符ArrayList,我需要将数字字符转换为整数,并将其放入一个新数组中。所以:
ArrayList<Character> charList contains [5, ,1,5, ,7, ,1,1]
我想获取当前的charList并将内容放入Integer类型的新ArrayList中,显然不包含空格。
ArrayList<Integer> intList contains [5, 15, 7, 11]
现在任何帮助都将不胜感激。
答案 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,然后我们将它们收集到一个新的列表中。