sgrillon:
私のJavaコード:
public class TestArray {
public static void main(String[] args) {
final String[] cols = { "a", "b", "c", "d" };
List<String> columns = new ArrayList<>(4);
// for (int i = 1; i < cols.length - 1; i++) {
// columns.add(cols[i]);
// }
System.arraycopy(cols, 0, columns, 0, cols.length - 1);
for (String c : columns) {
System.out.println(c);
}
}
}
ソナーは言う:配列は、ループを使用してコピーするべきではありません
配列または配列の一部をコピーするためにループを使用することは、単にそこにビルトインされているあなたのためにそれを行うための機能無駄なコードです。その代わりに、使用Arrays.copyOf、別の配列に配列全体をコピーする別の配列への配列のサブセットのみをコピーするSystem.arraycopyのを使用して、アレイを使用して新しいリストのコンストラクタを供給するためには、Arrays.asListを使用します。
Arrays.asListは、単に元の配列の周りにコレクションラッパーを置く非固定サイズのリストが所望される場合、そうさらなるステップが必要であることに留意されたいです。
そう、私はこれを試してみてください。
System.arraycopy(cols, 1, columns, 0, cols.length -1);
私はこのエラーがあります:
Exception in thread "main" java.lang.ArrayStoreException
at java.lang.System.arraycopy(Native Method)
at com.company.TestArray.main(TestArray.java:16)
私は配列から来る私の問題は、リストはないと思います
アンディ・ターナー:
あなたは使用することはできませんSystem.arraycopy
配列ではない何かにデータを格納します。それが述べたよう文書で:
以下のいずれかに該当する場合...、
ArrayStoreException
スローし、転送先は変更されません。
src
引数が配列ではない物体を指します。dest
引数が配列ではない物体を指します。- ...
場合はcols
、参照型指定された配列であり、単に使用Arrays.asList
してsubList
:
columns.addAll(Arrays.asList(cols).subList(1, cols.length - 1));