java.util.HashMapのキー値を2つ以上指定したい

こういうことがしたい
z = func(x,y)

つまり、理想:

hm.put({10,10},"10,10");
hm.put({10,20},"10,20");
System.out.println({10,10});
考えた1:配列をキー値とする
import java.util.*;

public class Main{
public static void main(String[] arg){
HashMap<int[],String> hm = new HashMap<int[],String>();

hm.put(new int[]{10,10},"10,10");
hm.put(new int[]{10,20},"10,20");
System.out.println(hm.get(new int[]{10,10}));
System.out.println(hm.get(new int[]{20,10}));

int[] key1=new int[]{100,100};
hm.put(key1,"100,100");
System.out.println(hm.get(key1));
}
}

最初の「new int[]{10,10}」と2つ目の「new int[]{10,10}」は実体が異なるのでキーとして使えない。
これを避けるには、3つ目のputのように、変数を用いて同じ実体を指定させればよい。意味が無い。


考えた2:文字列化して、キーとする

import java.util.*;
public class Main{

public static void main(String[] arg){
HashMap<String,String> hm = new HashMap<String,String>();

hm.put(""+20+":"+10,"20,10");
hm.put(""+10+":"+20,"10,20");
System.out.println(hm.get(""+20+":"+10));
System.out.println(hm.get(""+10+":"+20));
}
}

ただしint型など文字列化できる場合に限る。あと冗長臭い。ちょっとGC気になる。


自分で使おうと思っていた用途だと、文字列で十分そうな気がしたので、ここで解決扱い。


でも納得いかないので、ググった。
ArrayListなら行けるらしい。

import java.util.*;

public class Main{
public static void main(String[] arg){
HashMap<ArrayList<Integer>,String> hm = new HashMap<ArrayList<Integer>,String>();

ArrayList<Integer> keyin=new ArrayList<Integer>();
keyin.add(10);keyin.add(10);

hm.put(keyin,"10,10");

ArrayList<Integer> keyout=new ArrayList<Integer>();
keyout.add(10);keyout.add(10);

System.out.println(hm.get(keyout));
}
}

面倒すぎる。キーが100個ぐらいあるなら使えるかな。そんな状況でJava使いませんが。
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

tag : Java

コメントの投稿

非公開コメント

プロフィール

舞葉(ぶよう)

Author:舞葉(ぶよう)
github.io
はてなブログ(競プロ)

古い記事のソースコードは色分けしていないので、高機能テキストエディタに貼り付けたほうが見やすいかも。

検索フォーム
このブログについて
自分がつまづいた話題、なんとなく書きたいと思ったこと、ググったけど殆ど資料なかったぞオイ な話等をアップする予定。通りすがりでも、参考になっていただければと。プログラムの例外入力、メモリリークは責任負いません。投稿された記事は修正・削除する場合があります。
カテゴリ
タグ

HSP3アルゴリズムとデータ構造c++RubyJavaUnity画像解析C機械学習C#LinuxcodeIQKinectMinecraftTonyuSystemraspberrypiPythonHTML5音声制御Simulinkruby俺ルール通信制御Javascriptシミュレーション

counter-shinobi
固定記事
最新記事
最新コメント
月別アーカイブ
ブロとも申請フォーム

この人とブロともになる

アクセスランキング
[ジャンルランキング]
コンピュータ
1139位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
191位
アクセスランキングを見る>>