Java

Stream でインデックスを求める

リストに存在するオブジェクトが何番目=インデックスを求める方法、Java8 Stream で求める。 見つからない場合は、-1 が返れば良しとする。という要求で、サンプルを書くと。。。 List<String> list = Arrays.asList("a", "b", "c", "d", "e", "f"); /* このリス</string>…

Apache POI Excel 入力規則の読み込み(2)

Apache POI Excel の入力規則を参照するのに、前の記事、 Apache POI Excel入力規則の読み込み(1) - Oboe吹きプログラマの黙示録 このように毎回書いてはいられない。そこで、XSSFSheetオブジェクトを渡して後から何回でも問い合わせするクラスを書いてみ…

Apache POI Excel入力規則の読み込み(1)

Apache POI で Excel の入力規則によるプルダウンの情報を読み取る場合、同じシート内のセルで入力規則の値を格納していないと読み取れない。このように同じシート内にある入力規則の情報を参照するコードサンプルを書いてみた。 (ただし、このサンプルは縦…

リストを作る時の fromJson 書式

Google gson でリストを復元する時の fromJson の書き方をよく忘れるのでメモ Gson gson = new GsonBuilder().serializeNulls().create(); List<Foo> list = gson.fromJson(string, new TypeToken<Collection<Foo>>(){}.getType());</collection<foo></foo>

GSON でjson生成時の null を処理する(2)

先日書いたGSON使用時の String型のNULLパターン { "aaa": "null" } でなくて、 { "aaa": "" } にするための TypeAdapterFactory を書き直しました。 import java.io.IOException; import com.google.gson.Gson; import com.google.gson.TypeAdapter; import…

GSON でjson生成時の null を処理する場合、

google GSON でJSONを生成する場合、そのままだと、nullオブジェクトは無視(出力されない)なので、GsonBuilder の serializeNulls() を呼び出して、 { "a": "null" } のように出す。 しかし、String オブジェクトの結果として、{ "a": "" } が欲しい場合が…

GSON と LocalDate / LocalDateTime のシリアライズ・デシリアライズ

Java7をやめてJava8で開発するようになり、java.util.Dateを使わなくなり、 Google gson で LocalDate / LocalDateTime をシリアライズ・デシリアライズするのに 簡単に書ける方法を探すのに苦労したのでその過程と結果です。 GsonBuilder の registerTypeAd…

文字列区切り→リスト

Java7 では、数字がカンマなどで区切られた文字列を split して List<Integer> にするのに、 こんなコードを書いていた。。。 String str = "1,2,,4,5"; List<Integer> list = new ArrayList<Integer>(); for(String s: str.split(",") ){ if ( ! "".equals(s) ){ list.add(Integer.pars</integer></integer></integer>…

Map.Entryの実装は用意しておく。

import java.util.Map の Entry は、汎用的に実装を作っておくと良いかもしれない。 import java.util.Map; /** * Map.Entry実装. */ public class Pair<K, V> implements Map.Entry<K, V>{ public K key; public V value; public Pair(){} public Pair(K k, V v){ key =</k,></k,>…

Optional のifPresent の否定形

Java8 Optional には、ifPresent はあるけれどこれの否定系=NULL の場合、コンシューマ(Consumer)呼び出すものがない。 やはり欲しい。。 でも、こんな方法がある、Optional の map 関数で値が存在する場合を、Runnable に変換する方法で再度、Optional に…

csv4j をラムダ式で。。。

CSVを読み込んで処理する csv4j の利用をラムダ式で書きたくなってきた。 ラムダ式の対象にしたいのは、CSVLineProcessor を使う CSVStreamProcessor である。 ラムダ式にしないこれまでの使用サンプル try{ CSVStreamProcessor csvStreamProcessor = new…

Optional の orElseThrow を使う

Wicket を Java8 で書くようになったせいなのか、Wicket のバリデータを書くのが嫌にになってきた。 たしかにバリデータを書いてセットして、Form の onError が call される方式は、 入力項目が少ない場合に手軽で良いと思う。でも項目が多くて Form のonSu…

Wicket の IRequestParameters と Java8

Wicket でプログラムを書いていて、form送信結果を取得するのに、 getRequestCycle から、org.apache.wicket.request.IRequestParameters を取得して 抽出することはあまりやらないのだけど、 IRequestParameters#getParameterNames() で、受け取るパラメー…

Stream API で List→Map

Java8 Stream API で List→Map 生成に考えられる2通りのうち、どちらが良いのだろうか?例) Item クラス、キーになる int 型の code と String の name を持つ。List<Item> list = createList(); // 生成される。。。/* <R> R collect(Supplier<R> supplier, BiConsumer<R,? super T></r,?></r></r></item>…

Java8 StreamでWicket ListViewセル結合

昨日書いた groupingBy の利用として、HTML-tableタグ rowspan結合をサンプルとして作ってみました。 keyでグルーピング可能な任意オブジェクトリストを受け取って最終目的は以下のような表を作ることです。 Wicket の ListView でこの表を作ります。 対象の…

groupingBy

toMap でオブジェクトをグループ分けするか、groupingBy を使うか? サンプルとして、以下のようなオブジェクトと、リストを作るメソッド public class Author{ public String level; public String name; public Author(String level, String name){ this.l…

IntSream → List<Integer>

Memo List<Integer> list = IntStream.range(1, 13).boxed().collect(Collectors.toList()); list.stream().forEach(System.out::println); results 1 2 3 4 5 6 7 8 9 10 11 12 ================ UnaryOperator<String> stringUpperCase = (s)->s.toUpperCase(); System.out.</string></integer>…

任意の日付→月末日

任意の日付から、月末日を求めるのに、Java7では、わざわざ Calendar を介してしていたので、 コードを綺麗にする為にメソッドにしていた。。 public static Date getEndDate(Date date){ final Calendar cal = Calendar.getInstance(); cal.setTime(date);…

mybatis JSR310 の LocalDate など

Java7→Java8 移行で、mybatis を使うプロジェクトで注意しなければならないのは、 java.util.Date の代わりに java.time.LocalDate / LocalDateTime に置き換わった時です。 mybatis でタイプハンドラを指定やらないとなりません。MITライセンスで、このハ…

removeIf

そろそろ、Java 8 を使い始めるとしよう。 今までアホなコーディングとして、List の展開、 for(E e:list) の中で、list.remove(e); を書いてしまうと、 当然、 Exception in thread "main" java.util.ConcurrentModificationException at java.util.ArrayLi…

正規表現プロセッサ

csv4j を久しぶりに使って思った。なぜ今まで正規表現プロセッサを 書かなかったのだろうか?ごちゃごちゃと力づくのコーディングをして放置して しまったのであろう。 反省すべきであった。 パターンマッチで一致するごとに実行するメソッドをインターフェ…

Windows7 で、JavaService.exe

Windows7 で、JavaService.exe は動くか? 答は、Yes である。ただし普通に実行しては次のようにエラーになる。 UranService という名前でサービス登録しようとすると、 Error attempting to install UranService service アクセスが拒否されました。 Window…