技術と日常。

日々の気が付いたこと・気になったことを残しておきます。

Java

[Java]文字列をreplaceAllで大文字/小文字化(\u, \l)する方法

文字列をreplaceAllで大文字/小文字化(\u, \l)する方法 そもそもPatternクラスで非対応 Java9以降なら解決策がある 参考 文字列をreplaceAllで大文字/小文字化(\u, \l)する方法 そもそもPatternクラスで非対応 この記事にたどり着かれた方は、以下のように書…

[Java]StreamのgroupingByで、元の順序を保つ方法

groupingByを普通に書くと 例えば、あるStringのリストがあり、それぞれの個数を数えるケースを考えます。 普通に書くと以下のようになるかと思います。 Map<String, Long> collected = List.of("d", "c", "b", "a", "d", "c", "b", "d", "c", "d") .stream() .collect(Col</string,>…

[Gradle]タスクの依存関係を表示する

きっかけ タスクが実行される順序を確認する タスクの依存関係を確認する 出典 きっかけ Mavenではビルドライフサイクルの中で、決められた一連のタスクが頭から流れるため、なんとなく覚えていれば「この操作の前に処理を挟みたければあのタスクだな。」等…

[Java]Streamを閉じないとリソースリークするよ!っていう話(AutoClosable)

StreamのAPI仕様確認 AutoClosableが必要となるケース java.nio.file.Files list lines jOOQ(ORM) ResultQuery close処理を付与したいなら 最後に 参考・出典 本記事は、JJUGにて登壇したものを、記事向けに加筆修正したものです。 その際の動画・スライドは…

[Java]Comparator#reversed()のエラー解消から学ぶJavaコンパイラの弱点

きっかけ 原因 再現 それでも逆順のComparatorがほしい 最後に きっかけ Comparator#reversed() という、Comparatorの逆順を返してくれる便利なメソッドを知り、使おうとしたところ、以下のエラーが出てしまいました。 var list = new ArrayList<>(List.of(2…

[Java/JJUG] Streamが閉じれるって知ってた?にて登壇しました

2022/10/17 本発表を記事にしました。 beppy.hatenablog.com 2022/08/26の、JJUGナイトセミナー「おうちで!ビール片手にLT大会!」にて、スピーカーを務めました。 動画 スライド 感想 他のスピーカーの方々は、LocalStack(AWS)でのモダンな開発や、Javaの…

[Gradle]サブプロジェクトの依存性を上位でも使用する方法

発生した問題 解決法 まとめ 参考 発生した問題 Gradleのプロジェクト間にmain <- sub の依存関係があるときに、以下のように書き、libraryをmainでも使用しようとしましたが、読み込めない問題が発生しました dependencies { implementation project(':sub'…

[Java]StreamのgroupingByで、カテゴリごとの合計(Sum)を求める方法

前提 結果がMap int, long, doubleの場合 それ以外の型の場合 結果が元の型のCollection 参考 前提 例えば以下のような、カテゴリとその量が定義されているクラスがあったとします。 public record Obj( String category, int amount ) { } そのリストから、…

[Java17]Streamを返すメソッドを一覧にしてみた

なぜ調べたの? 結果 調査方法 最後に なぜ調べたの? 正規表現を使用するコードを書いていたところ、Matcher#results()という、一致結果をStreamで返すメソッドが、Java9から追加されていたことを知りました。 ほかにも便利メソッドがないかどうか気になり…

[Java]Stream#reduce() 要素数が0個/1個の時の挙動は?

リファレンスに内部実装の参考が載っていました。 Optional reduce(BinaryOperator accumulator) これは、次の操作に相当します。 boolean foundAny = false; T result = null; for (T element : this stream) { if (!foundAny) { foundAny = true; result =…

[Java]Optional.ifPresent()/ifPresentOrElse()で戻り値がほしい時に読むページ

例えばメソッドの最後で、以下のように返したいとします。 Optionalがあるとき: 空じゃないよ! Optionalが空の時: 空だよ! 普通に isPresent()で書くとこのようになります。 if (opt.isPresent()) { return "空じゃないよ!"; } return "空だよ!"; 以下の…

[IntelliJ]Eclipseからいい感じに乗り換えるTips(Windows版)

※Mac版はこちらです コードの配色をEclipse色に 自動補完の細かい設定 「いい感じにしてくれる機能」のショートカットを覚える 自動補完の大文字小文字を無視する 固有のショートカットを覚える 補完ショートカットの差を知る その他の機能 タブを一括で閉じ…

[IntelliJ]Eclipseからいい感じに乗り換えるTips(Mac版)

※Windows版はこちらです コードの配色をEclipse色に 自動補完の細かい設定 自動補完のキーをcommand + spaceへ 「いい感じにしてくれる機能」のショートカットを覚える 自動補完の大文字小文字を無視する 固有のショートカットを覚える 補完ショートカットの…

[IntelliJ]ローカル変数の割り当て

EclipseだとCtrl(Command) + 2 -> lにてローカル変数の割り当てができますが、同じことをIntelliJで行う方法について記載します。 Windows: Ctrl + Alt + V Mac: Command + Ctrl + V です。 場所によっては、以下のように 、選択行のどこまでを変数として割…

[Java]Selenium 3 -> 4の移行を正規表現で楽しよう

Javaにて、Selenium4.0にバージョンアップを行ったところ、ユーティリティーメソッドを書き換える必要がありました。 driver.findElementByClassName("className"); ↓ driver.findElement(By.className("className")); 以下の正規表現を使用することで、一括…