2021年04月04日に参加
学習履歴詳細
【3回目】JavaCoding Problems サロゲートペアが少し理解できた。
サロゲートペアとは
- unicode文字を表すために16bitのコードポイント2つでunicodeの1文字を表す仕組みと理解した。
- 上記のコードポイントはhigh surrogateとlow surrogateと呼ばれ、16進数の範囲が決まっている。
Javaとサロゲートペア
- サロゲートペアのコードポイント(32bit)を
Character.toChars()
に渡すと要素を2つ持つChar型
の配列が帰ってくる。 - 上記を
String.valueOf()
に渡すとString型
の文字列が1文字で帰ってくる。
public static Map<String, Integer> countDuplicateCharacters(String str) { Map<String, Integer> result = new HashMap<>(); for (int i = 0; i < str.length(); i++){ //サロゲートペアで32bitが帰ってくる int cp = str.codePointAt(i); //32bitをchar型の配列に変えて、Stringに変換する String ch = String.valueOf(Character.toChars(cp)); if (Character.charCount(cp) == 2) { //2 はサロゲートペアを表す i++; } result.compute(ch, (k, v) -> (v == null) ? 1 : ++v); } return result; }
気になること
- LinkedHashMapの特徴が気になる。
Java
2023年06月08日(木)
1.5時間