Java

groupingBy と toMap のメモ

Java Stream groupingBy と toMap のメモを今更だけど、テンプレートとしてメモの整理 List<Item> list groupingBy Map<String, List<Item>> map = list.stream().collect(Collectors.groupingBy(t->t.name)); ちゃんと書く Map<String, List<Item>> map = list.stream().collect(Collectors.groupingBy(t</string,></string,></item>…

長さ制限しない重複順列

先日公開した要素の重複(繰り返しを許す)順列、RepeatablePermutation yipuran-core/RepeatablePermutation.java at master · yipuran/yipuran-core · GitHub これは、元のリストより大きい長さの順列を抽出しようとすると、 size over の IllegalArgument…

Java マップの値からキーの参照

過去、何度も書いているかもしれない「マップの値からキーの参照」という命題 結果をStream で取得することにして、、、 public static <K , V> Stream<K> getKeysWithValue(Map<K, V> map, V v){ return map.entrySet().stream() .filter(e->v.equals(e.getValue())).map(Ma</k,></k></k>…

重複順列

要素の重複有りの順列(Permutation)を Java で、いろんなオブジェクトに対して作成できるようにする。 import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * RepeatablePermutation */ public class RepeatablePermutation<T></t>…

hashCode と equals を簡単に実装

Java クラスの hashCode と equals メソッドを手書きするのは、結構面倒くさい。 IDE Eclipse で自動生成してもいいけど、毎回、各々これで書くのもなんだか。。。Apache の commons-lang3 にある hashCode と equals のビルダーを使うと、 書く量も少な…

配列、リストの要素が全て同じかチェックする

Java8 でも動くことを前提にする。(まだ Java8 を使う企業が多いからだ)配列 equals で比較できる場合 public static <T> boolean matchElements(T[] ary) { if (ary.length < 2) return true; for(int i=0, j=1; j < ary.length; i++, j++) { if (!ary[i].eq</t>…

リスト要素の重複チェック

先日、リスト要素の重複チェックに、なるほど唸ってしまったものを方法を見つけました。 Java8 Streamの重複チェック (Collectorを使ってきれいに書く) - Qiita static<T> Collector<T,?,Boolean> uniqueElements(){ Set<T> set = new HashSet<>(); return Collectors.reducing(</t></t,?,boolean></t>…

ツール daria の重複チェックを考える(2)

GitHub - yipuran/daria: Database data set Toolを更新しました。詳細は Wiki に書きましたが抜粋すると、、 https://github.com/yipuran/daria/wiki Excel 1行目のDBテーブル列名の書式を、太字にすることで対象の列データ一意制約チェックを実行して、…

Homogeneous を追加

yipuran-core に、要素の重複を許す組み合わせを算出する Homogeneous を追加しましたバージョンは、 4.12要素の重複を許す組み合わせ - Oboe吹きプログラマの黙示録を実装した。yipuran-core/Homogeneous.java at master · yipuran/yipuran-core · GitHub

Combinations のインスタンス生成を修正することにした

申し訳ないが、yipuran-core の Combinations のインスタンス生成方法を、ver 4.10 から 変えることにした。 使い回すようにしたいからだ。yipuran-core/Combinations.java at master · yipuran/yipuran-core · GitHub

要素の重複を許す組み合わせ

yipuran-core で書いた Combinations yipuran-core/Combinations.java at master · yipuran/yipuran-core · GitHub は、要素の重複を許さない、組み合わせだ。 つまり、"A", "B", "C" の組み合わせで、"AAA" や、"AAB" という解を許さない Combination であ…

ツール daria の重複チェックを考える(1)

Excel で記述したデータを Database テーブルにセットするツール daria GitHub - yipuran/daria: Database data set Tool で、実装していない機能がある。 それは、格納するデータの重複制限チェックである。 daria は、DBの対象テーブル構造をチェックす…

オブジェクトのコピーで除外フィールドを指定可能とするかどうか

以前作成した yipuran-core の中のField ユーティリティ yipuran-core/FieldUtil.java at master · yipuran/yipuran-core · GitHubこれに、コピー元のフィールドで、コピー除外対象を指定できるようにした方が良いか迷っている。 → FieldUtil に新しい stati…

morpheus ?

ちょっと気になった。。 GitHub - zavtech/morpheus-core: The foundational library of the Morpheus data science framework

Field の getType は、Class

よく落ち着いてみれば、Java リフレクションの Field の getType の返却は、Class だから、以前書いた 入れ子構造のBean の中の Obejct を取得する(2) - Oboe吹きプログラマの黙示録 も、以下のとおり書き直せる。 import java.lang.reflect.Field; impor…

依存関係のライブラリ(JAR)を含めた実行可能JAR を Gradle で作成する

Gradle の jar タスクは以下のようにする。 jar { excluse 'MET-INF/*.SF', 'MET-INF/*.DSA', 'MET-INF/*.RSA', 'MET-INF/*.MF', manifest { attributes 'Main-Class': 'org.yips.HellowMain' 'Class-Path': configurations.runtime.files.collect { "lib/%i…

JSONの整形

JavaScript , Python, Java(gson) それぞれのJSON整形JSON 素材 {"a":1,"b":"ABC","c":[1,2,3],"d":{"A":"x", "e":{ "B":23, "C":45},"f":null}} JavaScript JSON.stringify で充分、詳細は、JSON.stringify() - JavaScript | MDN をよく読むこと。 const da…

入れ子構造のBean の中の Obejct を取得する(2)

入れ子構造のBean の中の Obejct を取得する(1) - Oboe吹きプログラマの黙示録 の続き。。。変数の宣言名でなく型を指定して、Bean の中を探索→入れ子構造も探索で指定型のインスタンスを求める。 ただし、探索に指定する型が重複して持っている場合はう…

入れ子構造のBean の中の Obejct を取得する(1)

入れ子構造のクラス、例えば以下のようなクラス、 (setterやgetterなどはここでは省略) public class Aunit{ private int id; private String name; private Bunit bunit; } public class Bunit{ private String name; private Cunit cunit; } public clas…

右端に結果を書いた表のCSVから結果を求める

昨日は、表の最終行に結果を書いた表CSVだったが、右端に置いた表の場合での プログラムはどうなるか、 とても簡単になる。 import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java…

問い合わせマトリクスの実装

複数の条件、条件の数にもよるが表にまとめないと管理が辛いことは、よくあるケースです。 条件数も少なめで、求めた結果も偏りがあるなら、if 文のネストを書いてもなんとか人の思考も 時間的に追いつくでしょう。 案外、条件1つ増えただけでも、数学的に…

daria公開

遂に公開、Excel → Database のツールhttps://github.com/yipuran/daria

main/resources に配置するテキストファイルの扱い

開発 project の main/resources に、UTF-8 で書いたテキストファイルを用意して ビルドのクラスPATH target/classes などに配置されて 読込み実行して、 それを Windows でコマンドプロンプトで実行して、文字化けしないように標準出力する。 変な要件かも…

Class の getPackageName() は、Java9 からであることに注意

ある程度の規模のプロジェクトまたは会社では、Java で開発といっても 未だに、Java 8 のままである。だから以下のようなコードを書いても使うことができない。自クラスと同じ場所(クラスパッケージ階層)に読込みたいリソースファイルを配置する設計の時、…

月末日までの日付ストリーム

任意の日付に対する月末日までの日付ストリームの生成は、 以下、2通り考えられる。Stream.iterate で、+1 days する方法 LocalDate d = LocalDate.now(); Stream<LocalDate> s = Stream.iterate(d, e->e.plusDays(1)) .limit(d.lengthOfMonth() - d.getDayOfMonth() +</localdate>…

BeanUtils の copyProperties に喧嘩を売るつもりはないけど。。。

Apache の commons-beanutils 今更、BeanUtils の copyProperties と張りあうつもりもないし、Entity DTO Form などで属性値渡すような アーキテクチャ(アプリ構成)には、とっくに興味がないのだが、、、 原始的には、面白いところなので、書いてみた。公…

Apache POI でExcel 日付読込み(2)

先日書いた oboe2uran.hatenablog.com よりも、 やはり、org.apache.poi.ss.usermodel.DateUtil#isCellDateFormatted(Cell cell) を使うべきで、 セルの日付の値取得はこうすべきだ。(例) XSSFWorkbook book = new XSSFWorkbook(inputstream); XSSFSheet s…

Java 動的に複数ソートを書くためのクラス

結局、、 複数要素ソートを動的(ダイナミック)にする。 - Oboe吹きプログラマの黙示録これは、git-hub の方に入れました。。 yipuran-core/DyComparator.java at master · yipuran/yipuran-core · GitHubsorting · yipuran/yipuran-core Wiki · GitHub

複数要素ソートを動的(ダイナミック)にする。

前回投稿の Java 複数要素ソートのおさらい - Oboe吹きプログラマの黙示録 は、どうしてもソート対象の要素が、、、 ・要素の数、優先順位 の指定はコーディングに依存が強い、、 ・昇順のみ でした。 list.stream().sorted( Comparator.comparing(Fieldgett…

Java 複数要素ソートのおさらい

1つの要素ソートであれば、単純な例 public class Foo{ public Integer width; public Integer height; public Integer depth; } List<Foo> list; // list 生成後、、 list.stream().sorted((a, b)->a.width.compareTo(b.width)) width -> height -> depth の順</foo>…