Integer の ArrayList を 1 つの int に変換する最も簡単な方法は何でしょうか。リストの最初の Integer は int の最初の数値などです。Java で?
たとえば、整数の 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
これが正解です。
注: 最も簡単な方法が常に最も効率的であるとは限りません。言語を指定しなかったため、これは 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 を使用しませんでした。これは宿題のように見えるからです。
C# (指定しなかった:-) を想定していますが、一般的なアルゴリズムは必要な言語で動作します。
int num = 0;
for( int i = 0 ; i < list.Count ; i++ )
{
num *= 10;
num += (int)list[i];
}
明らかに、コードは、結果の数値が int で表現できるほど小さいこと、および ArrayList 内の各項目が 0 から 9 までの範囲にあることを前提としています。
20 億程度までの数値のみを処理します。より大きな数が必要な場合は、long、long long、またはお気に入りの bigint クラスを使用します。すべてが負でない限り、負の数では機能しません。
int runningtotal = 0;
foreach(int i in myList) {
runningtotal *= 10;
runningtotal += i;
}
return runningtotal;
別の解決策、これは9より大きい数字を受け入れます
List<Integer> list =
int num = Integer.parseInt(list.toString().replaceAll("\\D",""));
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()を使用してそれを処理できます。
どの言語が必要かわからない場合、最善のアプローチは1000000 + 400000 + 60000 + 7000 + 800 + 30+8の合計を見つけることだと思います。
あなたの質問から、ArrayListのインデックス0が最も重要な値であると想定しています。あなたの例は、最初の数が1,000,000に相当することを示しています。
それらを文字として扱い、それらを連結してから、整数に解析して戻すことができます。
または、各項目を結果に追加してから、結果に10を掛けて、大きさを設定することもできます。
または、各要素の値を追加できます* 10 ^(count-index); ここで、countはArrayList内の要素の数です。
Pythonで!楽しみのためだけに:
i = int( "" .join([str(z)for z in x]))
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)