ArrayListからArrayに変換するのが安全かどうかを知りたいですか?ArraylistからArray
1236
1233
4566
4568
....
私は配列リストにそれらを読みたいと、私は配列に変換します は、私はそれぞれの行のテキストファイルの文字列を持っています。それを行うのが賢明ですか法的ですか?
おかげ
ArrayListからArrayに変換するのが安全かどうかを知りたいですか?ArraylistからArray
1236
1233
4566
4568
....
私は配列リストにそれらを読みたいと、私は配列に変換します は、私はそれぞれの行のテキストファイルの文字列を持っています。それを行うのが賢明ですか法的ですか?
おかげ
はいit is safe to convert an ArrayList
to an Array
。それが良いアイデアかどうかは、あなたの意図された使用に依存します。 ArrayList
が提供する操作が必要ですか?その場合は、ArrayList
のままにしてください。それ以外の変換!それは本当にあなたのユースケースに依存することになり、 "良い考え" だかどうか
ArrayList<Integer> foo = new ArrayList<Integer>();
foo.add(1);
foo.add(1);
foo.add(2);
foo.add(3);
foo.add(5);
Integer[] bar = foo.toArray(new Integer[foo.size()]);
System.out.println("bar.length = " + bar.length);
出力
bar.length = 5
ArrayListが空の場合はどうなりますか? – ThanosFisherman
それは空です。 – IMustBeSomeone
ArrayList<String> myArrayList = new ArrayList<String>();
...
String[] myArray = myArrayList.toArray(new String[0]);
。 Vを想定し
おかげで、ただ知りたいことがあります:私は配列のサイズを宣言する必要はありませんか? –
JavaDocsはあなたの友人です。渡される配列が小さすぎる場合、新しい配列が返されます。 argsを受け取らないメソッドのもう一つのバージョンは、 'Object'の配列を返します。 –
はArrayListのです:
String[] x = (String[]) v.toArray(new String[0]);
ArrayList<String> a = new ArrayList<String>();
a.add("test");
@SuppressWarnings("unused")
String[] array = (String[]) a.toArray();
あなたは後でそれがArrayListの中で文字列を維持するよりも多くの労力を要するだろう配列を操作する必要がある場合、それはあなたが達成したいかに依存します。また、ArrayListを使ったランダムアクセスもあります。list.get(index);
これは最善の方法です(IMHO)。
List<String> myArrayList = new ArrayList<String>();
//.....
String[] myArray = myArrayList.toArray(new String[myArrayList.size()]);
このコードも動作します:
String[] myArray = myArrayList.toArray(new String[0]);
しかし、それはあまり効果:文字列配列を二回作成されます:長さゼロの配列が作成された最初の時間は、その後、実際のサイズの配列が作成され、充填返されます。したがって、必要なサイズがわかっている場合(list.size()
から)、すべての要素を配置できる大きさの配列を作成する必要があります。この場合、再割り当てされません。
' new String [0] 'と' new String [size] ' – gamliela
Collectionインターフェイスには、新しいコレクションを配列に変換するtoArray()メソッドが含まれています。この方法には2つの形式があります。引数なしのバージョンは、コレクションの要素をObject配列に返します。public Object [] toArray()。返された配列は他のデータ型にキャストできません。これは最も簡単なバージョンです。 2番目のバージョンでは、返す配列のデータ型、public Object [] toArray(Object type [])を渡す必要があります。参考のため
public static void main(String[] args) {
List<String> l=new ArrayList<String>();
l.add("A");
l.add("B");
l.add("C");
Object arr[]=l.toArray();
for(Object a:arr)
{
String str=(String)a;
System.out.println(str);
}
}
、このリンクを参照http://techno-terminal.blogspot.in/2015/11/how-to-obtain-array-from-arraylist.html
一つのアプローチは、印刷がループするための第1の内部で行われている第2のforループを追加することであろう。このように:
static String[] SENTENCE;
public static void main(String []args) throws Exception{
Scanner sentence = new Scanner(new File("assets/blah.txt"));
ArrayList<String> sentenceList = new ArrayList<String>();
while (sentence.hasNextLine())
{
sentenceList.add(sentence.nextLine());
}
sentence.close();
String[] sentenceArray = sentenceList.toArray(new String[sentenceList.size()]);
// System.out.println(sentenceArray.length);
for (int r=0;r<sentenceArray.length;r++)
{
SENTENCE = sentenceArray[r].split("(?<=[.!?])\\s*"); //split sentences and store in array
for (int i=0;i<SENTENCE.length;i++)
{
System.out.println("Sentence " + (i+1) + ": " + SENTENCE[i]);
}
}
}
あなたはそれが良いアイデアかどうかを伝えるための十分な情報をあなたに提供していません。 –
ArrayListは正常です。私がArrayに変換するために見ることができる唯一の理由は、それが必要なメソッドを呼び出す必要がある場合です。 –