什么是将整数的ArrayList转换为一个int的最简单方法,在Java中,使列表中的第一个整数成为int中的第一个数字,等等。
例如,一个包含Integers的ArrayList:1 4 6 7 8 3 8 变成int值1467838。
例如,一个包含Integers的ArrayList:1 4 6 7 8 3 8 变成int值1467838。
在Java中最简单的方法是:
int total = 0;
for (Integer i : list) { // assuming list is of type List<Integer>
total = 10*total + i;
}
例如,如果列表包含1 4 6 7 8 3 8,那么您会得到:
total = 0
total = 10*0 + 1 = 1
total = 10*1 + 4 = 14
total = 10*14 + 6 = 146
...
total = 10*146783 + 8 = 1467838
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(4);
list.add(6);
for (Integer x : list) {
s += x.toString();
}
Integer finalResult = Integer.parseInt(s);
编辑: 针对评论中提到的所有人,如果您真的担心效率问题,但由于某些原因想使用此字符串方法,则应按以下方式执行:
StringBuilder sb = new StringBuilder();
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(4);
list.add(6);
String s;
for (Integer x : list) {
sb.append(x.toString());
}
Integer finalResult = Integer.parseInt(sb.toString());
int num = 0;
for( int i = 0 ; i < list.Count ; i++ )
{
num *= 10;
num += (int)list[i];
}
另一种解决方案,它将接受大于9的数字
List<Integer> list =
int num = Integer.parseInt(list.toString().replaceAll("\\D",""));
只能处理不超过20亿的数字。如果您需要更大的数字,请使用long、long-long或您喜欢的bigint类。除非所有数字都是负数,否则无法处理负数。
int runningtotal = 0;
foreach(int i in myList) {
runningtotal *= 10;
runningtotal += i;
}
return runningtotal;
int result = 0;
for(int i=list.Count - 1;i>=0;--i)
{
result += list[i] * (int)(Math.Pow((double)10, (double)(list.Count - 1 - i)));
}
同样也不能处理负数……你可以使用 Math.Abs() 来解决这个问题。
listToNumber = foldl (\a b -> a*10 + b) 0
在Python中,
def list_to_number(some_list):
return reduce(lambda x, y: x*10 + y, some_list, 0)
如果不知道你想要用哪种编程语言,我认为最好的方法是找出1000000 + 400000 + 60000 + 7000 + 800 + 30 + 8的总和。