整数的ArrayList到一个int?

时间:2009-06-02 17:19:05

标签: java arraylist

将整数的ArrayList转换为一个int的最简单方法是什么,列表中的1st Integer是Java中的第一个数字,等等?

例如,整数的ArrayList:1 4 6 7 8 3 8
成为int值1467838

11 个答案:

答案 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#。