重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

初歩的な質問になるかと思いますが、
どうかご指導願います。

リストにはHashMap用のkeyとvalueが
lists.add("key1");
lists.add("value1");
lists.add("key2");
lists.add("value2");
lists.add("key3");
lists.add("value3");
↑のような感じでセットされています。
このリストの要素をキーと値を別々の配列にセットしたいのですが、
どうすればいいのかわかりません。

配列 key         配列 value

String key[]          String value[]

key[0] = "key1";       value[0] = "value1"; 
key[1] = "key2";       value[1] = "value2";  
key[2] = "key3";       value[1] = "value3";

↑のような感じにfor文やwhileを使ってできると思うのですが、
ど素人のため全くうまくいきません。
。ご指摘ご指南頂きたく思います。

A 回答 (3件)

https://ideone.com/jLY1Y

逆順に出るんだね。へぇ。
    • good
    • 0
この回答へのお礼

ありがとうございます。
思っていたとおりです。
こんな感じでスタイリッシュに記述したかったのです。
ほんとに無知でした・・・
大変勉強になりました。
ありがとうございました!

お礼日時:2011/11/29 15:59

いろいろ条件式部分おかしいし。


想定してるのは以下だとおもわれる。
また内容を理解した上で書きを利用してください。

Map<String, String> toMap(List<String> list) {if (list.size() % 2 != 0) {throw new IllegalArgumentException("引数のリストのサイズは2の倍数限定。");}Iterator<String> itr = list.iterator();Map<String, String> map = new LinkedHashMap<String, String>();String key = null;while (itr.hasNext()) {if (key == null) {key = itr.next();} else {map.put(key, itr.next());key = null;}}return map;}
    • good
    • 0
この回答へのお礼

ありがとうございます。
コピペで確認しながら試してみました。
思っている処理結果と相違ないのですが、引数の指定など素人の僕にはまだ理解できない部分が多く、敷居が高く感じました。
本当に良い勉強材料になります。
ありがとうございました!

お礼日時:2011/11/29 16:08

「全くうまくいかない」とは, 具体的にはどうやってどう「うまくいかない」のですか?

この回答への補足

説明不足で申しわけありません。
ど素人のため文法の規則から間違っているかも知れません・・・
現在は下記のようにしてHashMapにセットしようとしているのですが、全くの的外れのようで値のセットができていません。
それで、まず配列に入れてからの方がよいのではと思い質問させていただきました。
しかし、そもそもリスト内の値を2つに分割しようとしているfor文内のコードを理解できていないので、質問も丸投げのようになってしまい申しわけなく思っております。

HashMapにセットするにせよ、配列に組み込むにせよ、問題はfor文内の処理コード記述がわからない・・・

このようなど素人の質問ですので、面倒にならい範囲で回答いただければ幸いです。

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

lists.add("key1");
lists.add("value1");
lists.add("key2");
lists.add("value2");
lists.add("key3");
lists.add("value3");
lists.add("key4");
lists.add("value4");

HashMap<String ,String> map = new HashMap<String ,String>();
int size = lists.size();

for(int i = 0; i > size; ++i){
String key = lists.get(i);
if (i % 2 == 0)
continue; //最初に戻る

for(int j= 0; j > size; ++j){
String value = lists.get(j);
if (j % 2 == 0)
continue; // 最初に戻る

map.put(key, value);

}
}

補足日時:2011/11/29 00:44
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!