私は今、助けが必要です。私は2次元の配列をJavaの1次元配列に変換する必要があります。誰でも助けてくれますか?二次元配列(数値)を次元配列とJava上のViceversaに変換する
1
A
答えて
2
このような意味ですか?
import java.util.*;
public class Test {
public static void main(String[] args) {
String[][] data = new String[][] {
{ "Foo", "Bar" },
{ "A", "B" }
};
String[] flattened = flatten(data);
for (String x : flattened) {
System.out.println(x);
}
}
public static <T> T[] flatten(T[][] source) {
int size = 0;
for (int i=0; i < source.length; i++) {
size += source[i].length;
}
// Use the first subarray to create the new big one
T[] ret = Arrays.copyOf(source[0], size);
int index = source[0].length;
for (int i=1; i < source.length; i++) {
System.arraycopy(source[i], 0, ret, index, source[i].length);
index += source[i].length;
}
return ret;
}
}
あなたはプリミティブ型のためにそれをしたい場合は、それぞれのプリミティブ型のために過負荷を記述する必要がありますが、あなたはその時点でnew int[size]
の代わりArrays.copyOf
を使用することができます。それは配列の初期化は、やや混乱ますので、私は意識的にこの例では、ジェネリック型を残し
import java.util.stream.Stream;
public class ArrayConverter {
public static String[] flatten(String[][] array) {
// Create a stream of the given array
return Stream.of(array)
// Map each of its elements to a stream (thus creating a
// one-dim-array inside the stream, so to say)
.flatMap(Stream::of)
// Retrieve the stream as array, explicitly calling String to
// keep the type
.toArray(size -> new String[size]);
}
}
:
0
AのJava 8ソリューションは、このような何かを見ることができます。あなたがそれを必要とするかどうか私に教えてください。
特に、プリミティブ型の配列にこの変換を使用する場合は、対応するストリームクラスのフラットメソッドを使用する必要があります。 など。あなたはINT-配列を使用している場合は使用します。
Stream.flatMapToInt(...)
実際のプリミティブなint-値は、このようにInteger
オブジェクトにオートボクシング逃れてIntStream
を取得します。
関連する問題
- 1. 多次元PHP配列を二次元配列に変換する
- 2. 数値多次元配列(AKA 2D配列または二次元配列) - Bash
- 3. 3次元配列を2次元配列に変換する
- 4. 多次元配列を1次元配列に変換する
- 5. 1次元配列を2次元配列に変換する
- 6. 二次元配列をミラーリングする[Java]
- 7. 二次元配列から1次元配列を取得
- 8. 二次元のChar配列
- 9. は、二次元配列
- 10. 印刷二次元配列
- 11. 二次元配列C#
- 12. PHP二次元配列
- 13. 1次元配列を多次元の関連配列に変換する
- 14. bashシェルスクリプトで1次元配列を2次元配列に変換する
- 15. 2次元セル配列を3次元配列に変換する
- 16. 1次元配列を2次元配列に変換する方法
- 17. 多次元配列を二次元配列に代入する方法は?
- 18. 2次元配列とJavaの1次元配列を比較する
- 19. 文字列を2次元配列に変換するJava
- 20. 2次元配列の値を1次元配列と比較する
- 21. Excel VBA二次元配列を一次元に移動
- 22. 2次元numpy配列を3次元配列に配置
- 23. Javaの2次元配列
- 24. Javaの3次元配列
- 25. Javaの多次元配列
- 26. 二次元配列をdbに挿入
- 27. boolsに山車の二次元配列の変換
- 28. 多次元配列と単次元配列のキャスト
- 29. 多次元配列から1次元ベクトルへの変換
- 30. 多次元配列を単純配列に変換する
代わりに、すべての原始的な方法をオーバーロードの、それは「ボクシング」メソッドオブジェクトを手動でボックスプリミティブのカップルを書くことが簡単だ - と、まだ平坦化のための平坦化方法を使用する:) –
はあなたでしたあなたが意味することを正確に説明してください。私はそれが本当にint [] []をintに変換するのに本当に役立つだろうか分かりません。それはまた、はるかに効率的ではありません:) –