Javaでマップを文字列に変換する
この投稿では、Javaでマップを文字列に変換する方法について説明します。
1.使用する toString()
方法
簡単なアプローチは、を使用してマップの文字列表現を取得することです toString()
方法。マップの文字列表現は、中括弧で囲まれたキーと値のペアのリストで構成されます。隣接するペアはコンマとそれに続く単一のスペースで区切られ、各キーと値のペアは等号で区切られます(=
)。すなわち、 {K1=V1, K2=V2, ..., Kn=Vn}
.
以下は、マップの文字列表現を示す簡単な例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<String, Integer> lang = new HashMap<>(); lang.put("C++", 1980); lang.put("Java", 1995); lang.put("Ruby", 1991); String str = lang.toString(); System.out.println(str); } } |
出力:
{Java=1995, C++=1980, Ruby=1991}
2.Guavaの使用
Guava’s ジョイナークラス オブジェクトの文字列表現をカスタマイズするように設計されています。ジョイナーを作成し、セパレーターを構成して、追加するコレクションを指定するだけです。
次のコードはそれを示しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import com.google.common.base.Joiner; import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { Map<String, Integer> lang = new HashMap<>(); lang.put("C++", 1980); lang.put("Java", 1995); lang.put("Ruby", 1991); String str = Joiner.on("|").withKeyValueSeparator(":").join(lang); System.out.println(str); } } |
出力:
Java:1995|C++:1980|Ruby:1991
3.StreamAPIの使用
Java 8以降では、Stream APIを使用してマップの文字列表現を取得でき、必要に応じて簡単にカスタマイズできます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import java.util.HashMap; import java.util.Map; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { Map<String, Integer> lang = new HashMap<>(); lang.put("C++", 1980); lang.put("Java", 1995); lang.put("Ruby", 1991); String str = lang.entrySet().stream().map(e -> e.getKey() + ":" + e.getValue()) .collect(Collectors.joining("|")); System.out.println(str); } } |
出力:
Java:1995|C++:1980|Ruby:1991
これで、Javaでマップを文字列に変換することができます。