2012-06-21 4 views
5

私はHashMap<String, String>です。私はhashmap.values()の文字列配列を作成したい場合は、我々は最初に文字列の数がわからない場合は、動的文字列配列を作成する方法は?

String[] strArray = new String[hashmap.size()] 

として作成することができますが、ハッシュマップの値が「A、B、Cは」その後、私はStrArrayとにAとBとCを追加する必要が含まれている場合は、私の問題があります。

+0

実際に配列を作成して値を入れるよりも、必要なアイテムの数を最初に数えるのはなぜですか(ハッシュマップを1回トラバースする)。 – Vlad

+0

誰もあなたに電子メールを書いてくれないでしょう、答えはここに来ます...;)また、この配列で何をしようとしているのか教えてください。これを動的に変更する必要がある場合は、(ArrayList 'のような)利用可能なコレクションのうちの1つを使用することができます。 – brimborium

答えて

21

ArrayListを使用してください。どんなにサイズは、あなたのHashMapあなたが簡単にあなたのArrayListで作業できるのが何であるかを

List<String> myList = new ArrayList<String>();

あなたは配列を必要とする場合は、終了したら、あなたは

String[] arr = myList.toArray(new String[myList.size()]); 

を使用することができます。

+6

+1配列が必要な場合は、終了したら 'String [] arr = myList.toArray(new String [myList.size()])'を使うことができます。 –

+1

@ PeterLawrey私の答えを編集し、この点を追加してください。 :-) –

+0

私はあなたが私の質問を理解することができないと思う。それは私が儀式の言葉で質問を入れないかもしれないのでかもしれません。それをもう一度exxplainする方法。例:HashMap値は –

0

配列である必要がありますか?マップを使用すると、値セットのキーを取得できます。

+0

Johnにお返事ありがとうございます。はい、配列にする必要があります。また、HashMapの値はコンマで区切られています。これらのコンマ区切りの値はカンマで区切られ、別々にString Arrayに追加されます。 –

+0

ArrayListを模倣してデフォルトの初期サイズを設定することができます。それを超えた場合、配列コピーをシステムで使用して、より大きな配列に値をコピーします。その最も効果的ではありませんが、配列が必要なようです –

2

アレイが必要なときはいつでも値のコピーを取ることができます。

Map<Double, String> map = ... 
String[] values = map.values().toArray(new String[map.size()]); 

マップを変更しても(サイズが変更されない場合でも)、配列は変更されず、別のコピーを取る必要があります。値は一意である必要がありますか?

私は値(A、B、C、P、Q、R ...、Z)で文字列Arrayを作成する必要があります。

この場合、次のように表示されます。

Map<Double, String> map = ... 
List<String> valueList = new ArrayList<>(); 
for(String value: map.values()) 
    valueList.addAll(Arrays.asList(value.split(","))); 
String[] values = valueList.toArray(new String[valueList.size()]); 
+0

ありがとうピーター.. あなたは私の質問を理解することができないと思います。それは私が思うような儀式の言葉に質問を載せないためかもしれません。それをもう一度exxplainする方法。 例:Map map =新しいHashMap ();map.put( "1"、 "A、B、C");map.put( "2"、 "P、Q、R ...、Z"); 私は値(A、B、C、P、Q、R ...、Z)で文字列Arrayを作成する必要があります。 Map内のコンマ区切りの値は、任意の長さまで拡大されることがあります(wicは動的です)。私に提案をお願いします。 –

+0

コンマの間のすべての文字列の配列内の要素を使用しますか?もしそうなら、私はそのための解決法を追加しました。 –

+0

はいPeter Lawrey。コンマの間のすべてのStringの配列の要素が必要です。 String Arrayを構築するにはSIZE(動的)が必要です。私はSIZEを見つけることができません。 –

関連する問題