質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

4回答

5494閲覧

どなたか、javaでのHashMapの取り出しについて

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2015/12/01 07:22

編集2015/12/01 07:51

下のように、businessPersonList に、
人の名前と所属する会社名を入力しています。

そこから、表示例のように、
引数に指定した会社に所属する人の名前のリストを作って、
表示させたいのですが、

私の書いたものではうまくいかないので、
どのようにすればいいでしょうか?

(略)

// businessPersonListの作成。
HashMap<String, String> businessPersonList = new HashMap<String, String>();

businessPersonList.put("A社", 小室");
businessPersonList.put("B社", "森田");
businessPersonList.put("A社", "村上");
businessPersonList.put("C社", "岸");
businessPersonList.put("C社", "田中");
businessPersonList.put("A社", "南場");
businessPersonList.put("B社", "岡本");

for (String key : businessPersonList.keySet()) {
key = "A社";
System.out.println(businessPersonList.get(key));
}

(略)A社を指定した場合...
表示例. 会社名「A社」所属
名前:小室
名前:村上
名前:南場

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

keyが重なると上書きされます。そのため下記のようなHashMapを作る必要があります。

key:会社名,value:社員名のリスト

投稿2015/12/01 07:30

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/12/01 07:55

上書きされることは分かりましたが、 具体的にどのように作ればいいでしょうか?
yona

2015/12/01 08:26

具体的に説明するには情報が少なすぎて無理です。どのような状況で使うかわからないです。 ・keyを指定して該当する社員のリストを取得したい HashMap<String,ArrayList<String> ・汎用的に使いたい ArrayList<BuisinessPerson>
guest

0

ベストアンサー

要件を文章で表現すると
「ある会社(key)の社員リスト(value)を出力したい」なので

コードだと
Map<String, List<String>> map = new HashMap<String, List<String>>();

全体をコードで表現すると

Map<String, List<String>> map = new HashMap<String, List<String>>();

// A社の社員達
List<String> aList = new ArrayList<String>();
aList.add("小室");
aList.add("村上");
aList.add("南場");
map.put("A社", aList);

// B社の社員達
List<String> bList = new ArrayList<String>();
bList.add("森田");
bList.add("岡本");
map.put("B社", aList);

// C社の社員達
List<String> cList = new ArrayList<String>();
cList.add("岸");
cList.add("田中");
map.put("C社", cList);

// 指定会社の社員リストを出力する
String key = "A社";
// ここでD社とかの場合、NullPointerExceptionが発生するが割愛
List<String> list = map.get(key);

Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}

結果

小室
村上
南場

以上でどうでしょうか。

投稿2015/12/02 01:58

編集2015/12/02 07:57
liguofeng29

総合スコア801

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

どうしてもMap系を使いたい場合、keyとvalueの関係は逆であるべきでは?
つまり、名前をkeyに、会社名をvalueに取るべきです。
その上でentrySet()を使ってループして、valueが特定のものだけkeyを出力する、という形になるのではないでしょうか?

投稿2015/12/01 16:40

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんにちは。

おそらく、無理にひとつのハッシュマップに作ろうとせずに
ArrayListを使用すればその悩みは解決するのではないでしょうか。

http://npnl.hatenablog.jp/entry/20090116/1232123160
このようなサイトが参考になるかもしれません。

投稿2015/12/01 12:14

編集2015/12/01 12:15
Takahito

総合スコア66

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問