2011-09-13 4 views
0

文字列の配列を作成したいが、最初はその長さが分からない。配列の長さは多くの要素に依存しますが、文字列や単語を入力すると決定されます。しかし、処理ではそれができません。最初に長さを指定するように求められます。どのように私はこれを取り除くことができますか?すべての助けに感謝します。どんな提案も感謝します。 Amrita最初に長さを指定せずに文字列の配列を作成するにはどうすればよいですか?

+0

お願いします。 "どのようなプログラミング言語ですか?" –

+0

答えはあなたが働いている環境によって異なります。あなたは私たちに手がかりを与えなければなりません! –

+0

ああ、申し訳ありません。私はProcessingで働いています。基本的にはJavaです! – Amrita

答えて

-2

LinkedList構造を使用する必要があります。これにより、コンテナ配列が簡単に拡張され、設定の制限ではなくコンストラクタの初期容量が使用されます。これは、現在の容量を超えるたびに内容をコピーするArrayListよりも効率的です。単純に追加するのではなく、現在の容量を超えます。

+0

ありがとう! LinkedListから要素にアクセスするにはどうすればよいですか?私は正しい構文を知らない。あなたの助けをもう一度ありがとう。 Amrita – Amrita

+0

get(int index)リスト内の指定された位置にあるStringを返します(add(String)を使用して最初の場所に配置します)。 –

+2

ArrayListは、サイズを変更したときにメモリを事前に割り当て、現在の記憶領域のサイズに固定係数(1.2 AFAIR)を掛けているため、その内容をサイズ変更するたびにコピーしません。 –

0

私はArrayListのを使用し、必要に応じてサイズを変更することから始めます。 JavaはArrayListのメモリを事前に割り当てているので、すべてのサイズ変更がコンテンツがメモリにコピーされるわけではありません。 ArrayListへのアクセスはLinkedList(O(n)ではなくO(1))よりも高速です。 ArrayListのサイズ変更に時間がかかることが判明した場合にのみ、LinkedListに切り替えると思います。

4
List<String> strs = new ArrayList<String>(); 
strs.add("String 1"); 
strs.add("String 2"); 
strs.add("String 3"); 

System.out.println(strs.size()); //3 
System.out.println(strs.get(1)); //String 2 

何かが必要なすべてです!リサイズやメモリ内の物のコピーなど、何かを心配する必要はありません。リストは必要に応じて拡張されます。パフォーマンスの詳細はすべて処理され、実際の動作に本当に関心がある場合を除き、使用するためにその詳細について読む必要はありません。

+1

Arraylistにあなたが「取得する」アイテムはキャストする必要があることに注意してください。 –

+0

@TimothyGroote Not correct - これがジェネリック医薬品です!もちろん、Java-5以前のJavaを使用していない限り、上記のコードはコンパイルされません。 – berry120

+0

これはProcessing.orgに関する質問です。 processing.orgはまだJava-5をサポートしていますか? –

2

JavaのPHPまたはjavascriptと異なり、配列は固定サイズのデータ​​構造です。 Java配列に初期サイズを与える必要があります。サイズを変更する方法はありません。 Javaコレクションには、配列を模倣できる素敵なデータ構造があります。詳細についてはthisthis答えをチェックしてください。

0

@ berry120が示唆しているように型付きのArrayListを使用します(そうしないと、常にObjectからStringにキャストする必要があります)。

また、処理に役立つ場合、処理には配列(append()およびexpand()など)を処理する機能があります。 Processing referenceの配列関数があります。

scenesの背後には、上記の配列関数がSystem.arraycopy()を使用しています(使用している場合)。

関連する問題