C#でJavaの二重中括弧初期化(Double Brace Initialization)と同じことを実現する方法
Javaの「二重中括弧初期化(Double Brace Initialization)」は、C#では単一の中括弧を使ったコレクション初期化子(Collection Initializer)で同等の処理を実現できます。
Javaの二重中括弧初期化は、オブジェクトの生成と初期化を1つの式でまとめて行える便利な記法です。ただし、内部的には匿名サブクラスを生成するため、シリアライズやequals比較などで意図しない挙動を引き起こす可能性がある点には注意が必要です。
Javaでの二重中括弧初期化の例
Javaでは次のように記述します。
List<String> list = new ArrayList<String>() {{
add("One");
add("Two");
add("Three");
add("Four");
}}このコードは、ArrayListを継承した匿名クラスのインスタンスを生成し、そのインスタンス初期化ブロック内でaddメソッドを呼び出しています。
C#での同等の書き方:コレクション初期化子
同じことをC#で行う場合は、コレクション初期化子を使用して、はるかに簡潔に記述できます。
List<string> list = new List<string>() { "One", "Two", "Three", "Four" };C# 3.0以降で利用可能なこの構文では、コンパイラが自動的にAddメソッドの呼び出しを生成するため、Javaのような二重中括弧や匿名クラスは不要です。また、C# 6.0以降ではオブジェクト初期化子と組み合わせて、プロパティの設定も同時に行えます。
var dict = new Dictionary<string, int>
{
["apple"] = 1,
["banana"] = 2
};このように、C#のコレクション初期化子はJavaの二重中括弧初期化と同じ目的を果たしながら、より安全で読みやすいコードを実現します。
-
Javaで文字列を文字のリスト(List<Character>)に変換する方法
Javaでは、chars()メソッドとStream APIを組み合わせることで、文字列を簡単にList<Character>へ変換できます。この記事では、その具体的な手順をサンプルコード付きで解説します。 変換の基本アプローチ まず、変換対象となる文字列を用意します。 String str = Website!; この文字列を文字のリストに変換するには、以下のように記述します。 List<Character> list = str.chars().mapToObj(n -> (char)n).collect(Collectors.toList()); 処理の流れを
-
Javaで文字(Character)のリストを文字列に変換する方法
Javaでは、Stream APIとCollectors.joining()を組み合わせることで、文字(Character)のリストを簡単に1つの文字列へ変換できます。この記事では、その基本的な手順とサンプルコードをわかりやすく解説します。 変換の手順 まず、次のような文字のリストがあったとします。 List<Character> list = Arrays.asList(W, e, l, c, o, m, e); このリストを文字列に変換するには、以下のようにstream()、map()、Collectors.joining()を使用します。 String string = li