将整数的ArrayList转换为一个int的最简单方法是什么,列表中的1st Integer是Java中的第一个数字,等等?
例如,整数的ArrayList:1 4 6 7 8 3 8
成为int值1467838
答案 0 :(得分:15)
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
这是正确答案。
答案 1 :(得分:5)
注意:最简单并不总是最有效。这是在java中,因为您没有指定语言。但你可以这样做:
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());
在第一个例子中,StringBuilder并不是为了简单起见而使用的,因为这看起来像是一个家庭作业。
答案 2 :(得分:4)
假设C#(您没有指定:-),但通用算法将以您需要的任何语言工作:
int num = 0;
for( int i = 0 ; i < list.Count ; i++ )
{
num *= 10;
num += (int)list[i];
}
显然,代码假设结果数小到足以用int表示,并且ArrayList中的每个项都在0到9之间(包括0和9)。
答案 3 :(得分:1)
仅处理最多20亿左右的数字。如果你想要更大的数字,请使用long,long-long或你最喜欢的bigint类。不会使用负数,除非它们都是负数。
int runningtotal = 0;
foreach(int i in myList) {
runningtotal *= 10;
runningtotal += i;
}
return runningtotal;
答案 4 :(得分:0)
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()来处理它。
答案 5 :(得分:0)
在不知道您想要哪种语言的情况下,我认为您最好的方法是找到1000000 + 400000 + 60000 + 7000 + 800 + 30 + 8的总和
答案 6 :(得分:0)
我假设您的问题是ArrayList的索引0是最重要的值。您的示例显示第一个数字相当于1,000,000。
您可以将它们视为字符,然后将它们连接起来,然后再解析为Integer。
或者您可以将每个项目添加到结果中,然后将结果乘以10来设置大小。
或者你可以添加每个元素的值* 10 ^(count-index);其中count是ArrayList中元素的数量。
答案 7 :(得分:0)
在Python中!只是为了好玩:
i = int(“”。join([str(z)for x in x]))
答案 8 :(得分:0)
在Haskell,
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)
答案 9 :(得分:0)
另一个解决方案,这将接受数字&gt; 9
List<Integer> list =
int num = Integer.parseInt(list.toString().replaceAll("\\D",""));
答案 10 :(得分:-1)
int i = mylist
.OfType<int>()
.Aggregate( (soFar, next) => soFar*10 + next);
嗯,无论如何,这都适用于C#。