Java
以下、B列をC列にシフトする操作 Sheet のメソッド shiftColumns(int startColumn, int endColumn, int n) startColumn = シフト対象列開始位置のメソッド shiftCendColumn = シフト対象列終了位置 n = シフトする列数 を使って実行すると、 shiftColum…
久しぶりに apache poi の Excel 操作の投稿です。 簡単な数式を含む Excel シートに、行を追加した時に数式も再計算させる例です。 以下のような Excel シートがあります。 これに、4行目と5行目の間に行を挿入して、値を追加しても 最終行の SUM関数が自動…
比率の積算値(比率と任意の値を積算して四捨五入)が0になるかどうかの境界値、、、 小数点6桁の場合は、以下のとおりである。 比率 比率 × value 0.000001 1以上、500000未満は、結果=0 、500000以上⇒ 結果>=1 0.000002 1以上、250000未満は、結果=0 、2…
先日、Python での 2つのリストに存在する要素を抽出したリストを求める - Oboe吹きプログラマの黙示録 を書いたので、 Java の方を整理して書き留めておく。 Java では、List と Set を意識して使いたいので、求める結果は Streamになるメソッドを 用意す…
範囲の幅から計算した範囲の数ではなく最大値で制限した範囲の処理をする課題が目的、 範囲の数を指定できる場合と比べていく。Java の場合、範囲幅=100 で、5個の範囲の処理、この 5個と指定できる場合は次のように簡単に書ける。 すなわち、IntStream.rang…
oboe2uran.hatenablog.comもっと単純に以下の方法、、 StreamSupport で作る filter に任せる。 static <T> Iterable<T> select(Iterable<T> it, Predicate<T> pred) { return () -> StreamSupport.stream(it.spliterator(), false) .filter(pred).iterator(); }</t></t></t></t>
Iterable<T> に、Predicate<T> を指定する形で生成する。 public static <T> Iterable<T> selectIterable(Iterable<T> it, Predicate<T> pred) { return () -> new Iterator<T>(){ Iterator<T> sourceIterator = it.iterator(); T current; boolean hasCurrent = false; @Override pu</t></t></t></t></t></t></t></t>…
短絡的だけど。。。 public static <T> Iterable<T> toIterable(Iterator<T> itr){ return new Iterable<T>(){ @Override public Iterator<T> iterator() { return itr; } }; }</t></t></t></t></t>
java.util.function.Predicate を適用した java.util.Iterator の生成List に対して生成します。 static メソッドです。 public static <T> Iterator<T> filterate(List<T> list, Predicate<T> predicate){ return new Iterator<T>(){ int ix = -1; @Override public boolea</t></t></t></t></t>…
Python でデカルト積(直積) - Oboe吹きプログラマの黙示録 に触発されて、Java 環境でのデカルト積を求めるものを作りました。 import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; /** * デカルト…
今更のことであるが。。。 List.of で作る List は、AbstractImmutableList だけど、 Java Stream の groupingBy や toMap で作成したキーに対するリストは、AbstractImmutableList ではない。 だから、 List<Item> list このすでに存在するAbstractImmutableList </item>…
Oracle は、SQLバインド変数の上限を超えると、 ORA-01745: ホスト/バインド変数名が無効です。 が発生する Oracle のバインド変数の上限は、32768PostgreSQL は、32767MySQL はクエリの上限サイズで制限を見た方が良いみたい show variables like 'max_allo…
Java の List 要素の置き換え(List の set メソッド実行)でも要件がない限り、 List のインデックスを求める要件などないであろう。Integer List の最大値のインデックスIntStream の reduce で求める Optional<Integer> res = IntStream.range(0, list.size()).box</integer>…
Java8では、 1.4.x 以降が使えないので、 1.3.x系の最終バージョンを使うmaven の pom.xml の設定は、、 <properties> <sl4j.version>2.0.13</sl4j.version> <logback.version>1.3.14</logback.version> </properties> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${sl4j.version}</version> </dependency>
Stream から 最大値、最小値を求めた時の結果は、null のStream のケースが 有りうるので、Optional です。 Stream<T>.max(Comparator comparator) Stream<T>.min(Comparator comparator) の返却値は、 Optional<T> 最大値、最小値が複数ある時、結果として返ってくる</t></t></t>…
-jar オプションによる JAR MANIFEST でメインクラスを指定した jar ファイル指定で 起動するケースがほとんどのせいで、 Java を学び始めた遠い昔で実行した起動コマンドスクリプトの作法を 忘れるまではいかなくても、これで良いのだっけと不安になってし…
改行を含まないデータCSVファイルの読込み - Oboe吹きプログラマの黙示録 を書いたのなら、 TSV の場合も同様に書ける。 まず、Csvtolist はカンマ区切りなので、これをタブ区切りで処理する Tsvtolist を用意する。 Csvtolist から変更箇所は1箇所だけであ…
実践で良く処理するCSVは、改行をデータに含まないケースがほとんどである。 改行をデータに含むケースを考慮したものとして、 GitHub - yipuran/yipuran-csv: Java CSV read and write を作ったが、改行をデータに含まないケースはこれを使わずにもっと少な…
Javaを呼び出すプロセスの現在のディレクトリPATH これを求める方法Paths.get("") を使う方法 import java.nio.file.Paths; String curpath = Paths.get("").toAbsolutePath().toString(); システムプロパティ環境変数(user.dir)から求める方法 String use…
昔、考えが及ばずあまりイケてない方法を書いた。 1プロジェクトで起動可能な2つのJARを作る - Oboe吹きプログラマの黙示録 これでは、2通りのJARしか対応できないので、ダメだ。 static mainメソッドのクラスをプロジェクトで複数持って、 各クラス毎の …
正規表現の任意のパターンの先読みやあと読みの書き方 (?=pattern) 肯定先読み 直後にpatternがある (?!pattern) 否定先読み 直後にpatternが無い (? 肯定後読み 直前にpatternがある (?
SpringBoot のプロジェクト生成に便利なのが、 以下です。https://start.spring.io/説明は、、、 spring.io
Java コードだけ?(こう限定していいのか微妙だけど)Webフレームワークである Vaadin をちょっと始めてみる Vaadin | The Web App Platform for JavaGetting Started | Vaadin Docs ここを参考に、もしくはこれに従って、、 Maven project の場合、 バージ…
正規表現だけでメールアドレスチェックをして良しとするのは あまり良くない。 メールアドレスが指すドメインだけでも、DNSサーバに問い合わせたい。 Java の場合、 以下を参考に、DNS lookUp で検証する。 https://docs.oracle.com/javase/jp/6/technotes/g…
以前、あまり思いつかずこのように書きました。 oboe2uran.hatenablog.com2つの連携した Map から、値を取得する時に使えますね。例)以下のような2つの Map Map<String, String> amap = Map.of("Orange", "i001", "Lemon", "i002", "Apple", "i003", "banana", "i004"); M</string,>…
Map<String, List<String>> が存在した時、キーに対するリストの存在をチェックして リストに追加するのに、ついつい、なんとも長いコードを書いてました。 Map の値にリストなどを持たせる場合の書きやすさと効率 - Oboe吹きプログラマの黙示録 にしても、以下のようにしても、 M</string,>…
この2つを積極的に使うプロジェクトって、意外と少ない。 LocalDateTime localdatetime = LocalDateTime.now(); // LocalDateTime → ZoneDateTime ZonedDateTime zoneddatetime = localdatetime.atZone(ZoneId.systemDefault()); // LocalDateTime → Offset…
任意のfrom-toを表現するオブジェクトとして、 import lombok.Data; @Data public class Route{ private Integer from; private Integer to; } こんなクラスがあったとする。これのリストのパターンとして、 想定している Route のリスト、連続性が成立して…
org.springframework.data.jpa.repository.JpaSpecificationExecutorSpecification を使って以下のメソッドで動的クエリを生成できる。 long count(Specification<T> spec) boolean exists(Specification<T> spec) List<T> findAll(Specification<T> spec) Page<T> findAll(</t></t></t></t></t>…
先日書いた、CSV形式の1行分の文字列からList<String>への変換 - Oboe吹きプログラマの黙示録 を単純に、interface のメソッドにする。 import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; import java.util.List; import ja</string>…