整数的ArrayList到一个int?

4 java arraylist

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

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

Mic*_*ers 16

Java中最简单的方法是:

int total = 0;
for (Integer i : list) { // assuming list is of type List<Integer>
    total = 10*total + i;
}
Run Code Online (Sandbox Code Playgroud)

例如,如果列表包含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

这是正确的答案.

  • 这打破了列表中的任何整数> 9.我没有在问题中看到这个约束,但OP标记为最佳的事实表明列表中的所有整数都保证<= 9. (2认同)

Ale*_*ley 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);
Run Code Online (Sandbox Code Playgroud)

编辑:为了取悦所有注意到这一点的人,如果你真的担心效率,但由于某种原因想要使用这个字符串方法,它应该这样做:

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());
Run Code Online (Sandbox Code Playgroud)

在第一个例子中,StringBuilder并不是为了简单起见而使用的,因为这看起来像是一个家庭作业.


dri*_*iis 4

假设使用 C#(您没有指定:-),但通用算法将适用于您需要的任何语言:

int num = 0;
for( int i = 0 ; i < list.Count ; i++ ) 
{
    num *= 10;
    num += (int)list[i];
}
Run Code Online (Sandbox Code Playgroud)

显然,代码假设结果数字足够小,可以用 int 表示,并且 ArrayList 中的每个项目都在 0 到 9 之间(包括 0 和 9)。