Java

リストの順序を保持したグルーピング

リストをグルーピング、しかしあくまでも順序付けされた並びの中でのグルーピングで同じキーのグループが複数あっても まとめない。 という要求があった時、少し悩んだ。サンプルとなるお題、、、要素のキーが以下のようにならんでいる場合、 A , A , A , B …

POI で セル書込み時に Optional を使う

Apache POI メモリ消費量が増えやすいし、今となっては使いにくい。 Excel の場合、セルのスタイル設定は今のメソッドは、まあ許すとして セルの値セットや、スタイル適用のメソッドが実行後のセルを返してくれれば、数珠つなぎにメソッド呼べるのに。。そこ…

HTTPClient の ResponseHandler

HTTPClient といえば、 https://hc.apache.org/ の HttpClient この中の ResponseHandler は、残念なのか仕方ないのか、@FunctionalInterface を持っているわけではない。 あの面倒くさいHTTPで受け取る処理をもう少しスマートに書きたくて、とりあえず…

Consumer を Inject

Google guice で、List をインジェクションする時によく使うのが、com.google.inject.TypeLiteral Java8 lambda の Consumer をインジェクションすることをやれば、条件分岐によるメソッド実行を 一括管理の記述ができると思った。まず、分岐ではなく、ただ…

NULLインジェクション

いつも、Google guice 使用を書いていて思うのが、NULLインジェクションが発生するとき、 @Nullable をつけて、Module の configure で、toProvider を書かなくてはならないのが 煩わしい。 binder().bind(Integer.class).toProvider(Providers.of(null)…

JavaFX CSS で @CHARSET記述は不要である

JavaFX の CSS を書いていると、ついHTMLのCSS を書いていた時の癖で @CHARSET "UTF-8"; を書いてしまう。でも、これを書いてしまうと、com.sun.javafx.css.parser.CSSParser は、CSS parseエラーになり思いとおりの スタイルが適用されなくなる。doc…

JavaFX の ウィンドウフレームを無くす

JavaFX の ウィンドウフレームを無くしたい場合、Application の start(Stage) で渡される javafx.stage.Stage をjavafx.stage.StageStyle の StageStyle.TRANSPARENT を指定すれば、ウィンドウフレーム無しの透過 StageStyle.UNDECORATED なら、ウィンドウ…

JavaFX で、外部フォント

JavaFX で、外部フォントを指定する場合の書き方CSS に書く場合 @font-faceで fontファミリ-ttfを定義、→ -fx-font-family で指定 @font-face{ font-family: meiryo; /** ttf ファイル参照 **/ src: url("file://c:/home/test/meiryo.ttf"); } Pane{ -fx-fon…

java.time.format.FormatStyle を確認

java.time.format.FormatStyle で Locale に従った日付表記を試してみる。 LocalDate.now().format(DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL).withLocale(new Locale("ja", "JP"))); LocalDate.now().format(DateTimeFormatter.ofLocalizedDate(…

JavaFX のイニシャライズ処理を Google guice で整理

前回に引き続き、JavaFX のイニシャライズ処理を Google guice で整理してみる。 起動のメインクラス・・・共通イニシャライズとして、guice の Module を配置、 最初に起動されるコントローラ・・・次画面のイニシャライズとして Module を配置、 →画面遷移…

JavaFX で Google guice によって FXMLLoader のロードを補助する

JavaFX の Controller (←この呼び方が個人的には嫌い、MVCモデルの Cなんだろうけど)のファクトリの コールバックに、Google guice でのインジェクションを行う方法は、とても有効な手段だと思う。前回の投稿、 JavaFX の画面遷移、簡単に書く。 - Oboe吹…

JavaFX の画面遷移、簡単に書く。

JavaFX の画面遷移、Webページ閲覧のように切り替え、いろんなやり方のサンプルを見たけど、どれも釈然としない。もっとシンプルに書けるはずだ。javafx.application.Application継承の mainメソッドクラス public class MainApp extends Application{ st…

fxml ソースの配置

JavaFX の画面デザインレイアウトは一度決定してリリースしたらそんなに変更差し替えるものではなかろう。Maven で基本アーキタイプ生成のサンプル、GitHub - javafx-maven-plugin/javafx-basic-archetype: A Maven archetype for generating a basic JavaFX…

JavaFX Mavenサンプル

JavaFX の Maven 基本的なアーキタイプを探していて、GitHub - javafx-maven-plugin/javafx-basic-archetype: A Maven archetype for generating a basic JavaFX starter project.というのを見つけたので、ここに紹介されたとおり mvn コマンドを以下のよう…

今更、JavaFX の開発環境、

デザインレイアウトの為の fxml を編集するツール、もうバージョンUPされる見込みがなさそうで、何とかORACLEのダウンロードサイトを見つける。 JavaFX Scene Builder 2.0インストールhttp://www.oracle.com/technetwork/java/javafxscenebuilder-1x-archi…

WebSocket の getOpenSessions は現在開いてるのを返す約束なのに。。

WebSocket の javax.websocket.Session の getOpenSessions は、現在開いてるセッションを全て返してくれるはずなのに、 サンプルを書いていて、どうも endpoint のセッションしか返してこない。。なぜ?Tomcat8.5.11 で試していた。。やりたかったのは、こ…

Wicket8 の LambdaModel

Wicket 8 になると待望のラムダ Model がある。PropertyModel を使って TextField に 自Pageクラスの変数を指定すると、どうしても new TextField<>("idname", new PropertyModel<>(this, "name"));のように書くことになり、"name" 変数名がタイプセーフでな…

IntStream から逆順リストを作る

List<Integer> years = IntStream.rangeClosed(2013, Calendar.getInstance().get(Calendar.YEAR)) .boxed() .sorted(Comparator.reverseOrder()) .collect(Collectors.toList());</integer>

日付期間重複の抽出

昨日、書いた日付期間のインターフェース DateSpan これを使って、BiConsumer の 期間が重複している重複日と重複した要素のリストを処理するメソッドを用意します。 public static void booklist(List list, BiConsumer<LocalDate, List<? super DateSpan>> bookConsumer){ AtomicInteger i = </localdate,>…

LocalDate の Stream 生成

開始日 LocalDate と 終了日 LocalDate 、 start 、 end の Stream int len = Period.between(start, end).getDays() + 1; Stream<LocalDate> stream = Stream.iterate(start, t->t.plusDays(1)).limit(len); ちょっと遊んだ、ふざけたコード StreamSupport.stream( Spl</localdate>…

DateSpan

日付期間に関する処理のために。。 import java.time.LocalDate; import java.time.Period; import java.util.AbstractMap; import java.util.AbstractMap.SimpleEntry; import java.util.ArrayList; import java.util.List; import java.util.function.Supp…

Combination の計算する程のことのない単純なペアの処理

単純にリストの項目を要素2個のペアで、全組み合わせの処理をするのに、数式 nCr に相当する処理を書いていたので 沢山の処理になってしまう。要素2個のペアの処理を全組み合わせを単純に行いたい。サンプル List<String> list = Arrays.asList( "a", "b", "c", "d</string>…

1行の table (HTML) を Java で解析する手法について

HTML 表(tableタグ) の1行もしくは数行の tr-td タグの文字列から単純に td の body に書かれた内容をJavaで抽出したいだけなのだが、 わざわざ、それだけの処理で SAXParser インスタンスや DOM インスタンスをつくって重くなるのが嫌になっ…

java.util.regex.Matcher とリスト置換

テンプレートのような、ある文字列の特定の文字をパラメータ文字列リストに置き換える処理は簡単だと思ってたが 以外と難しい。java.util.regex.Matcher を回した時に、置換メソッド実行していけば良いと思ってたが、 Matcher に、replaceFirst か replaceAl…

リスト順のままのグルーピングカウント

リストをキーによってカウントする=グルーピングしてカウントするのに変な要求の題を突き付けられました。 例えば、以下のようなクラスのObjectのリスト、(内部にカウンタを持ちグルーピングカウントの結果を持つもの)とします。 public class Item{ publ…

Arrays.asList が固定長のリストを返すことを忘れてはならない

訳あって String を確実に作れるカンマ区切りの文字列と単独の宣言済の String 数個 から 単独の宣言済の String を先頭に、String を作ることに少し悩みました。例えば、、 String str = "a,b,c"; String h1 = "1"; String h2 = "2"; String h3 = "3"; Stri…

リストの比較、ListDiff

6年も前は、リストを比較して処理するのに、ブログ投稿したことを考えてたhttp://oboe2uran.hatenablog.com/entry/2010/07/01/121003http://oboe2uran.hatenablog.com/entry/2010/07/01/121003 http://oboe2uran.hatenablog.com/entry/2010/06/26/132425htt…

CSV書込み(2)

CSV書込み、(1) - Oboe吹きプログラマの黙示録のつづきです。net.sf.csv4j.CSVWriter を使い、ヘッダ行もデータ行も呼び出し側の与えるデータの問題だと割り切って考えて以下の関数型インターフェースを用意すれば、とても簡潔になる。 import java.io.Ou…

CSV書込み、(1)

5年も前に CSVを生成する Javaプログラムコードを、csv4j を使って書いていた。 2011年 3月 http://oboe2uran.hatenablog.com/entry/2011/03/19/101643CSV書き込み(1) - Oboe吹きプログラマの黙示録http://oboe2uran.hatenablog.com/entry/2011/03/22/21…

Wicket 6.x→7.x でファイルダウンロード時のファイル名の注意

Wicket でファイルダウンロードのファイル名を日本語を使用する場合、Wicket 6.x では URLエンコードしていた。 Wicket 7.x 移行では必要ないことに気がついた。 scheduleRequestHandlerAfterCurrent を使う場合。。 try(IResourceStreamWriter writer = new…