ターン:
liushaobo
Javaでは、どのように配列をArrayListに変換するには?
:からの翻訳Javaへの配列のArrayListのために変換する方法?
本論文では、問題の中で最も人気のあるスタックオーバーフローの答えを分析し、質問者は、彼がスタックオーバーフロー権について多くのことを行うようになった名声ポイントをたくさん受けました。それは私と一緒に、今、この問題での最初のを見てみましょう大丈夫です。
質問は、「どのようにArrayListのようにJavaで配列を変換するには?」です
1
|
Element[] array = {
new
Element(
1
),
new
Element(
2
),
new
Element(
3
)};
|
1.最も人気が最も広く受け入れられた答えがあります
最も一般的なほとんどの人は受け入れ答えを下回っています。
1
|
ArrayList<Element> arrayList =
new
ArrayList<Element>(Arrays.asList(array));
|
まず、下の文書コンストラクタのArrayListを見てください。
ArrayListの(コレクション<?E拡張> :C) コンテナの特定の要素のリストを含む構造、容器は順序に従って、イテレータを返します。
したがって、次の何コンストラクタ:
1.容器Cが配列変換
アレイ2.配列が「からelementData」と呼ばれるArrayListにコピーされ
、以下のように元のArrayList工法です。
1
2
3
4
5
6
7
|
public
ArrayList(Collection<?
extends
E> c) {
elementData = c.toArray();
size = elementData.length;
if
(elementData.getClass() != Object[].
class
)
elementData = Arrays.copyOf(elementData, size, Object[].
class
);
}
|
2.もう一つの人気の回答
もう一つの人気の答えは次のとおりです。
1
|
List<Element> list = Arrays.asList(array);
|
これは、最高ではないですasList()はリストのサイズが固定されて返します。実際には、リストが返されないjava.util.ArrayListのを、しかしで定義されているjava.util.Arraysプライベート静的クラス。私たちは、知っているArrayListの自然の実現には配列で、asList()はリストが固定サイズのリストの元の配列によってサポートされて返されました。あなたは、リスト内の要素を追加したり、削除した場合この場合、プログラムは例外をスローしますUnsupportedOperationExceptionが。
1
|
list.add(
new
Element(
4
));
|
1
2
|
Exception in thread
"main"
java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList
at collection.ConvertArray.main(ConvertArray.java:
22
)
|
また3.ソリューション
オットーが提供するソリューション
1
2
3
|
Element[] array = {
new
Element(
1
),
new
Element(
2
)};
List<element> list =
new
ArrayList<element>(array.length);
Collections.addAll(list, array);
|
4.どのような問題があることを示します
この問題は難しいが、非常に興味深いものではありません。すべてのJavaプログラマは、ArrayListのを知っているが、このような間違いを犯すことは容易です。私は、これがこの問題の原因は、それを火であると思います。それは、特定の問題領域Javaライブラリのようなものであるならば、それはこれまで燃えるからではありません。
この質問は、同様にStackOverflowの他の問題に同じソリューションを提供する多くの答えがあります。人々は質問に答えるしたいとき、私は他の人が言うことではないと思います。
:からの翻訳Javaへの配列のArrayListのために変換する方法?
本論文では、問題の中で最も人気のあるスタックオーバーフローの答えを分析し、質問者は、彼がスタックオーバーフロー権について多くのことを行うようになった名声ポイントをたくさん受けました。それは私と一緒に、今、この問題での最初のを見てみましょう大丈夫です。
質問は、「どのようにArrayListのようにJavaで配列を変換するには?」です
1
|
Element[] array = {
new
Element(
1
),
new
Element(
2
),
new
Element(
3
)};
|
1.最も人気が最も広く受け入れられた答えがあります
最も一般的なほとんどの人は受け入れ答えを下回っています。
1
|
ArrayList<Element> arrayList =
new
ArrayList<Element>(Arrays.asList(array));
|
まず、下の文書コンストラクタのArrayListを見てください。
ArrayListの(コレクション<?E拡張> :C) コンテナの特定の要素のリストを含む構造、容器は順序に従って、イテレータを返します。
したがって、次の何コンストラクタ:
1.容器Cが配列変換
アレイ2.配列が「からelementData」と呼ばれるArrayListにコピーされ
、以下のように元のArrayList工法です。
1
2
3
4
5
6
7
|
public
ArrayList(Collection<?
extends
E> c) {
elementData = c.toArray();
size = elementData.length;
if
(elementData.getClass() != Object[].
class
)
elementData = Arrays.copyOf(elementData, size, Object[].
class
);
}
|
2.もう一つの人気の回答
もう一つの人気の答えは次のとおりです。
1
|
List<Element> list = Arrays.asList(array);
|
これは、最高ではないですasList()はリストのサイズが固定されて返します。実際には、リストが返されないjava.util.ArrayListのを、しかしで定義されているjava.util.Arraysプライベート静的クラス。私たちは、知っているArrayListの自然の実現には配列で、asList()はリストが固定サイズのリストの元の配列によってサポートされて返されました。あなたは、リスト内の要素を追加したり、削除した場合この場合、プログラムは例外をスローしますUnsupportedOperationExceptionが。
1
|
list.add(
new
Element(
4
));
|
1
2
|
Exception in thread
"main"
java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList
at collection.ConvertArray.main(ConvertArray.java:
22
)
|
また3.ソリューション
オットーが提供するソリューション
1
2
3
|
Element[] array = {
new
Element(
1
),
new
Element(
2
)};
List<element> list =
new
ArrayList<element>(array.length);
Collections.addAll(list, array);
|
4.どのような問題があることを示します
この問題は難しいが、非常に興味深いものではありません。すべてのJavaプログラマは、ArrayListのを知っているが、このような間違いを犯すことは容易です。私は、これがこの問題の原因は、それを火であると思います。それは、特定の問題領域Javaライブラリのようなものであるならば、それはこれまで燃えるからではありません。
この質問は、同様にStackOverflowの他の問題に同じソリューションを提供する多くの答えがあります。人々は質問に答えるしたいとき、私は他の人が言うことではないと思います。