1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Javaアルゴリズムライブラリ-Artery-サンプル

Last updated at Posted at 2019-08-28

■■■■ Javaアルゴリズムライブラリ-Artery-サンプル ■■■■

私が開発しているJavaアルゴリズムライブラリArteryの使用法&サンプルを紹介します。当記事が目次になります。
  Qiitaにアップしていないサンプルは、下記のベクターのダウンロードに含まれています。

Javaによるプログラミング時に頻出するメモリ上のアルゴリズム&ロジック&データ構造を構築するためのライブラリです。複雑で長いコードをシンプルかつテスト済みのコードに置き換えることができます。

サンプルは順次追加していきます。しかしすべての機能を解説するものではありません。

なお、Arteryには単体テストライブラリも含まれています。こちらを参照してください。
  Java単体テストライブラリ-Artery-サンプル

Arteryライブラリは、以下よりダウンロードできます。
  ベクター⇒プログラミング⇒Java言語
  version202005 - 2020/06/03 リリース

Arteryライブラリは商用も含めて無償で使用することができます。

#機能の概要

  • データ構造構築用クラス - Java標準クラス用のユーティリティ
    • List,Set,Map,配列、MapOnMap(二段Map)、ListOnMap(Mapの上にList)
    • 生成、追加、削除、抽出、値の変換、値の型の変換、他の構造への変換、要素包含判定、構造同士の包含判定、集合演算
  • データ構造構築用クラス - Artery独自クラス
    • ArBiMap(双方向Map)、ArMatrix(二次元Map)
    • 生成、追加、削除、抽出、値の変換、値の型の変換、他の構造への変換、要素包含判定、構造同士の包含判定、集合演算
  • 重要なインターフェース
  • データ保持用クラス
    • タプル、トリップル、CSV、TaggedCSV
  • 文字列処理
  • 日付、曜日、休日、和暦
  • その他

#データ構造構築用クラス-Java標準クラス用関連(S00)

これらのクラスの処理対象は以下の通り。カッコ内は処理クラス。

  • List(ArList)
  • Set(ArSet)
  • Map(ArMap)
  • 配列(ArArray)
  • 数値配列の処理(ArMath)
  • MapOnMap-Mapの上にMap(ArMapOnMap)
  • ListOnMap-Mapの上にList(ArListOnMap)

##List関連処理(ArList)(00)
###概要

  • Listの生成(from(List,配列,Set,CSV文字列)、繰返し文字列・数字)
  • Listの変更(null値・重複値の禁止、条件指定値すべての削除、要素の交換)
  • Listの変換(ランダム・逆順、値の変換、型の変換、to(MapOnMap,ListOnMap,ArMatrixなど))
  • Listの値の抽出(重複値の削除、インデックス指定、間隔指定、条件指定)
  • Listの値のインデックスの取得(値の直接指定、値の条件指定、値条件の連続個数指定)
  • Listの値のカウントと存在判定(重複値、null値、値の条件指定・インデックス指定・個数指定)
  • Listの値の集約値(最小値、最大値、合計値、平均値、標準偏差)
  • Listの値の推移値(移動平均率(値)、(初期or途中からの)変動率(値)、パーセント、(初期or途中からの)累積値)
  • Listの値のヒストグラム
  • 二つのListを利用した値の変換
  • 二つのListの等値判定(null無視、重複地無視、順番無視も可能)
  • 二つのListの集合演算(AND,OR,XOR,EXCEPT)

###Listの生成(from(List,配列,Set,CSV文字列)、繰返し文字列・数字)

  • Listをcloneする(List自身はCloneableでないことの対応)
  • Listを配列(Arrays#asListで生成したものは変更不可)やSetから生成する
  • ListをCSV文字列から生成する
  • 一定間隔の数値のListを生成する
  • ランダムな数値のListを生成する
  • 指定長さのランダムな英字のListを生成する
  • 指定値のListを生成する

□ Listをcloneする(List自身はCloneableでないことの対応)

ArList.java
  /**  Listをcloneする.List自体はCloneableでないことの対応. */
   public static <T> List<T> clone(List<T> list) 

[S00_00_00]

□ Listを配列(Arrays#asListで生成したものは変更不可)やSetから生成する

ArList.java
   /** 可変長引数をListにする.Arrays#asListで生成すると変更不可なため. */
   public static <T> List<T> construct(T... values)

[S00_00_01]

□ ListをCSV文字列から生成する

セパレータはカンマだけではなく指定することもできる。

ArList.java
   /** カンマで分割しリストにする. */
   public static List<String> construct(String str) 
   /** setで分割しリストにする. */
   public static List<String> constructFromCsv(String str,char sep)

[S00_00_02]

□ 一定間隔の数値のListを生成する

ArList.java
   /** startからcount数の数値をstep間隔で生成する. */
   public static List<Integer> constructSeqList(int start,int count,int step) 

[S00_00_03]

□ ランダムな数値のListを生成する

ArList.java
   /** start(含む)からend(含まない)の間の数値をcount回数生成する. */
   public static List<Integer> constructRandomList(int start,int end,int count)

[S00_00_03]

□ 指定長さのランダムな英字のListを生成する

ArList.java
   /** len長さの英字Stringをcount個生成する.specの指定で大文字のみ、小文字のみ、混在の指定ができる. */
   public static List<String> constructRandomList(int len,ArCaseSpec spec,int count)

[S00_00_04]

□ 指定値のListを生成する

ArList.java
   /** 指定された値をcount個数だけ生成する. */
   public static <T> List<T> construct(T value,int count)

[S00_00_05]

###Listの変更(null値・重複値の禁止、条件指定値すべての削除、要素の交換)

  • Listにnull値や重複値を挿入しないようにする.
  • Listから指定された値をすべて削除する.注、List#removeは最初の要素のみを削除する
  • Listをソートする.Comparatorを指定しなくてよいようにするだけ
  • Listにint値をソートした状態で挿入する
  • Listの指定位置の要素を交換する.

□ Listにnull値や重複値を挿入しないようにする.

ArList.java
   /**
    * リストにnullや重複データを挿入しないようにする<br>
    * @param ignoreNull : ArNull.IGNORE⇒挿入しない
    * @param ignoreDup : ArDuplicate.IGNORE⇒挿入しない
    * @return 挿入した場合はtrueを戻す.
    */
  public static <T> boolean add(List<T> list,T e,ArNullIgnore arNull,ArDuplicateIgnore arDup)
   /**
    * リストにnullや重複データを挿入しないようにする<br>
    * @param ignoreNull : ArNull.IGNORE⇒挿入しない
    * @param ignoreDup : ArDuplicate.IGNORE⇒挿入しない
    * @return 挿入した場合はtrueを戻す.
    */
  public static <T> boolean add(List<T> list,int index, T e,ArNullIgnore arNull,ArDuplicateIgnore arDup)

[S00_00_06]

□ Listから指定された値をすべて削除する.注、List#removeは最初の要素のみを削除する

ArList.java
   /** Listから指定された要素をすべて削除する.注、List#remove($Value)は最初の要素のみを削除する */
   public static <$Value> void removeAll(List<$Value> list,$Value value)
   /** Listからvalidatorに合致する要素をすべて削除する. */
   public static <$Value> void removeAll(List<$Value> list,ArValidator<$Value) validator

[S00_00_07]

□ Listをソートする.Comparatorを指定しなくてよいようにするだけ

ArList.java
   /** Comparableのリストをソートする */
   public static void sort(List<Comparable> list,ArSortDir dir)

[S00_00_08]

□ Listにint値をソートした状態で挿入する

ArList.java
   /** listにint値をソートした状態で挿入する */
   public static void insert(List<Integer> list,int value,ArSortDir dir)

□ Listの指定位置の要素を交換する.

ArList.java
   /** 指定位置の要素を交換する. */
   public static <T> void swap(List<T> list,int index0,int index1)

###Listの変換(ランダム・逆順、値の変換、型の変換、to(MapOnMap,ListOnMap,ArMatrixなど))

  • Listの要素の順番をランダムにする
  • Listの要素を逆順にする
  • Listの値をMapで指定された別の値に変換する、指定されない値は元のまま
  • Listの値をArCreatorで指定された別の値に変換する、指定されない値は元のまま
  • Listの要素の型をArCreatorで別の型に変換して新しいListを作成する
  • ListをMapに変換する、キーはフィールド名で指定する
  • ListをMapに変換する、キーと値はフィールド名で指定する
  • ListをMapに変換する、キーはArCreatorで生成する
  • ListをMapに変換する、キーと値はArCreatorで生成する
  • ListをArMatrix(二次元Map)に変換する、キーはフィールド名で指定する
  • ListをArMatrix(二次元Map)に変換する、キーはArCreatorで生成する
  • ListをMapOnMap(二段Map)に変換する、主キーと副キーはフィールド名で指定する
  • ListをMapOnMap(二段Map)に変換する、主キーと副キーはArCreatorで生成する
  • LIstをListOnMap(Map上にList)に変換する、キーはフィールド名で指定する
  • LIstをListOnMap(Map上にList)に変換する、キーはArCreatorで生成する
  • ListをSetに変換する
  • IntegerのListをintの配列に変換する

□ Listの要素の順番をランダムにする

ArList.java
   /** Listの要素の順番をランダムにする.元のListは変更されない.*/
   public static <T> List<T> randomize(List<T> list) 

[S00_00_09]

□ Listの要素を逆順にする

ArList.java
   /** Listの要素の順番を逆順にする.元のListは変更されない.*/
   public static <T> List<T> reverse(List<T> list)

[S00_00_10]

□ Listの値をMapで指定された別の値に変換する、指定されない値は元のまま

ArList.java
   /** Listの値をMapで指定された別の値に変換する.指定されない値は元のまま */
   public static <$element> void changeValue(List<$element> list,Map<$element,$element> map) 

[S00_00_11]

□ Listの値をArCreatorで指定された別の値に変換する、指定されない値は元のまま

ArList.java
   /** Listの値をArCreatorで指定された別の値に変換する. */
   public static <T0,T1> void changeValue(List<T0> list,ArCreator<T0,T0> creator) throws Exception

[S00_00_12]

□ Listの要素の型をArCreatorで別の型に変換して新しいListを作成する

ArList.java
   /** Listの要素の型をArCreatorで別の型に変換して新しいListを作成する */
   public static <T0,T1> List<T1> convert(List<T0> list,ArCreator<T0,T1> creator) throws Exception

[S00_00_13]

□ ListをMapに変換する、キーはフィールド名で指定する

ArList.java
   /** CollectionをMapに変換する、キーはフィールド名で指定する */
   public static <T0,T1> Map<T1,T0> createMap(Collection<T0> collection,String keyField) throws Exception 

[S00_00_14]

□ ListをMapに変換する、キーと値はフィールド名で指定する

ArList.java
   /** CollectionをMapに変換する、キーと値はフィールド名で指定する */
   public static <T0,T1,T2> Map<T1,T2> createMap(Collection<T0> collection,String keyField,String valueField) throws Exception  

[S00_00_15]

□ ListをMapに変換する、キーはArCreatorで生成する

ArList.java
   /** CollectionをMapに変換する、キーはArCreatorで生成する */
   public static <$Element, $Key> Map<$Key,$element> createMap(Collection<$Element> collection,ArCreator<$Element,$Key> creator) throws Exception 

[S00_00_16]

□ ListをMapに変換する、キーと値はArCreatorで生成する

ArList.java
   /** CollectionをMapに変換する、キーと値はArCreatorで生成する */
   public static <$Element, $Key, $Value> Map<$Key,$Value> createMap(Collection<$Element> collection,ArCreator<$Element,$Key> creator1,ArCreator<$Element,$Value> creator2) throws Exception 

[S00_00_17]

□ ListをArMatrix(二次元Map)に変換する、キーはフィールド名で指定する

ArList.java
   /** CollectionをArMatrix(二次元Map)に変換する、キーはフィールド名で指定する */
   public static  <$key0, $key1, $value> ArMatrix<$key0,$key1,$value> createArMatrix(Collection<$value> collection,String key0Field,String key1Field) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, InvocationTargetException

[S00_00_18]

□ ListをArMatrix(二次元Map)に変換する、キーはArCreatorで生成する

ArList.java
   /** CollectionをArMatrix(二次元Map)に変換する、キーはArCreatorで生成する */
   public static <T0,T1,T2> ArMatrix<T0,T1,T2> createArMatrix(Collection<T2> collection,ArCreator<T2,T0> key0Creator,ArCreator<T2,T1> key1Creator) throws Exception

[S00_00_19]

□ ListをMapOnMap(二段Map)に変換する、主キーと副キーはフィールド名で指定する

ArList.java
   /** CollectionをMapOnMap(二段Map)に変換する、主キーと副キーはフィールド名で指定する */
   public static <$Key0,$Key1,$Value> Map<$Key0,Map<$Key1,$Value>> createMapOnMap(Collection<$Value> collection,String key0Field,String key1Field) throws Exception 

[S00_00_20]

□ ListをMapOnMap(二段Map)に変換する、主キーと副キーはArCreatorで生成する

ArList.java
   /** CollectionをMapOnMap(二段Map)に変換する、主キーと副キーはArCreatorで生成する */
   public static <$Key0,$Key1,$Value> Map<$Key0,Map<$Key1,$Value>> createMapOnMap(Collection<$Value> collection,ArCreator<$Value,$Key0> key0Creator,ArCreator<$Value,$Key1> key1Creator) throws Exception

[S00_00_21]

□ ListをListOnMap(Map上にList)に変換する、キーはフィールド名で指定する

ArList.java
   /** CollectionをListOnMap(Map上にList)に変換する、キーはフィールド名で指定する */
   public static <$Key, $Value> Map<$Key,List<$Value>> createListOnMap(Collection<$Value> collection,String keyField) throws InstantiationException, IllegalAccessException, NoSuchFieldException, SecurityException, IllegalArgumentException, InvocationTargetException

[S00_00_22]

□ ListをListOnMap(Map上にList)に変換する、キーはArCreatorで生成する

ArList.java
   /** をListOnMap(Map上にList)に変換する、キーはArCreatorで生成する */
   public static <$Key,$Value> Map<$Key,List<$Value>> createListOnMap(Collection<$Value> collection,ArCreator<$Value,$Key> keyCreator) throws Exception

□ ListをSetに変換する

ArList.java
   /** ListをSetに変換する */
   public static <T> Set<T> toSet(List<T> list) 

□ IntegerのListをintの配列に変換する

ArList.java
   /** IntegerのListをintの配列に変換する */
   public static int[] toIntArray(List<Integer> integerList)

###Listの値の抽出(重複値の削除、インデックス指定、間隔指定、条件指定)

  • Listの重複要素のみを取り出して新しいListを作成する
  • Listの重複要素を除いた新しいListを作成する
  • Listから指定されたインデックス(以外)の要素を取り出して新しいListを作成する
  • ListからArValidatorに合致するインデックスの要素を取り出しして新しいListを作成する
  • Listの先頭から(末尾から)指定された間隔で要素を取り出して新しいListを作成する
  • ListのArValidatorに合致する(合致しない)要素を取り出して新しいListを作成する

□ Listの重複要素のみを取り出して新しいListを作成する

ArList.java
   /** Listの重複要素のみを取り出して新しいListを作成する */
   public static <T> List<T> selectDuplicated(List<T> list) 

[S00_00_23]

□ Listの重複要素を除いた新しいListを作成する

ArList.java
   /** Listの重複要素を除いた新しいListを作成する */
   public static <T> List<T> removeDuplicated(List<T> list)

[S00_00_24]

□ Listから指定されたインデックス(以外)の要素を取り出して新しいListを作成する

ArList.java
   /** Listから指定されたインデックスの要素を取り出して新しいListを作成する */
   public static <T> List<T> select(List<T> list,List<Integer> indexes)
   /** Listから指定されたインデックス以外の要素を取り出して新しいListを作成する */
   public static <T> List<T> selectExcept(List<T> list,List<Integer> indexes)

[S00_00_25]

□ ListからArValidatorに合致するインデックス(以外)の要素を取り出しして新しいListを作成する

ArList.java
   /** ListからArValidatorに合致するインデックスの要素を取り出しして新しいListを作成する */
   public static <T> List<T> selectByIndex(List<T> list,ArValidator<Integer> validator)
   /** ListからArValidatorに合致するインデックス以外の要素を取り出しして新しいListを作成する */
   public static <T> List<T> selectByIndexExcept(List<T> list,ArValidator<Integer> validator)

[S00_00_27]

□ Listの先頭から(末尾から)指定された間隔で要素を取り出して新しいListを作成する

ArList.java
   /** Listの先頭から指定された間隔で要素を取り出して新しいListを作成する */
   public static <T> List<T> select(List<T> list,int start,int interval,int count)
   /** Listの末尾から指定された間隔で要素を取り出して新しいListを作成する */
   public static <T> List<T> selectReverse(List<T> list,int start,int interval,int count) 

[S00_00_26]

□ ListのArValidatorに合致する(合致しない)要素を取り出して新しいListを作成する

ArList.java
  /** ListのArValidatorに合致する要素を取り出して新しいListを作成する */
  public static <T> List<T> select(List<T> list,ArValidator<T> validator)
  /** ListのArValidatorに合致しない要素を取り出して新しいListを作成する */
  public static <T> List<T> selectExcept(List<T> list,ArValidator<T> validator)

[S00_00_28]

###Listの値のインデックスの取得(値の直接指定、値の条件指定、値条件の連続個数指定)

  • 指定されたインデックス以降で指定された値のインデックスを戻す、値は直接指定またはArValidator指定
  • 指定されたインデックス以前で指定された値のインデックスを戻す、値は直接指定またはArValidator指定
  • 指定されたインブックス以降で指定された値が指定された回数以上連続するインデックスを戻す、値はArValidator指定
  • 指定されたインブックス以前で指定された値が指定された回数以上連続するインデックスを戻す、値はArValidator指定

□ 指定されたインデックス以降で指定された値のインデックスを戻す、値は直接指定またはArValidator指定

ArList.java
   /** 指定されたインデックス以降で指定された値のインデックスを戻す、値は直接指定 */
   public static <T> List<Integer> getIndexes(List<T> list,T element,int start) 
   /** 指定されたインデックス以降で指定された値のインデックスを戻す、値はArValidator指定 */
   public static <T> List<Integer> getIndexes(List<T> list,ArValidator<T> validator,int start) 

[S00_00_29]

□ 指定されたインデックス以前で指定された値のインデックスを戻す、値は直接指定またはArValidator指定

ArList.java
   /** 指定されたインデックス以前で指定された値のインデックスを戻す、値は直接指定 */
   public static <T> List<Integer> getIndexesReverse(List<T> list,T element,int end)
   /** 指定されたインデックス以前で指定された値のインデックスを戻す、値はArValidator指定 */
   public static <T> List<Integer> getIndexesReverse(List<T> list,ArValidator<T> validator,int end)

□ 指定されたインブックス以降で指定された値が指定された回数以上連続するインデックスを戻す、値はArValidator指定

ArList.java
  /** 指定されたインブックス以降で指定された値が指定された回数以上連続するインデックスを戻す */
  public static <T> List<Integer> sameValueSequence(List<T> list,ArValidator<T> validator,int count,int start)

□ 指定されたインブックス以前で指定された値が指定された回数以上連続するインデックスを戻す、値はArValidator指定

ArList.java
   /** 指定されたインブックス以前で指定された値が指定された回数以上連続するインデックスを戻す */
  public static <T> List<Integer> sameValueSequenceReverse(List<T> list,ArValidator<T> validator,int count,int end) 

###Listの値のカウントと存在判定(重複値、null値、値の条件指定・インデックス指定・個数指定)

  • Listがnullあるいはemptyであるかを判定する
  • Listに重複値があるかを判定する、出現回数をカウントする
  • Listの指定された値の数をカウントする、値は直接指定またはArValidator指定
  • Listの指定インデックス以降に指定された値があるかを判定する、値は直接指定またはArValidator指定
  • ListにArValidatorで指定された値が一つだけ存在するかを判定する
  • ListにArValidatorで指定された値が一つ以上存在するかを判定する
  • ListにArValidatorで指定された値が存在しないことを判定する
  • Listのすべての要素がArValidatorで指定された値であることを判定する
  • List1の要素がすべてList0に含まれているかを判定する

□ Listがnullあるいはemptyであるかを判定する

ArList.java
   /** Collectionががnullあるいはemptyであるかを判定する */
   public static <T> boolean isNullOrEmpty(Collection<T> list) 
   /** Collecitonががnullあるいはemptyでないかを判定する */
   public static <T> boolean isNotNullOrEmpty(Collection<T> list)

□ Listに重複値があるかを判定する、出現回数をカウントする

ArList.java
   /** Listに重複値があるかを判定する */
   public static <T> boolean duplicated(List<T> list)
   /** Listの値の出現回数をカウントする */
   public static <T> Map<T,Integer> countValue(List<T> list)

[S00_00_31]

□ Listの指定された値の数をカウントする、値は直接指定またはArValidator指定

ArList.java
  /** 指定された値の数をカウントする、値は直接指定 */
  public static <T> int count(Collection<T> list,T value) 
  /** 指定された値の数をカウントする、値はArValidator指定 */
  public static <T> int count(Collection<T> list,ArValidator<T> validator) 

[S00_00_32]

□ Listの指定インデックス以降に指定された値のインデックスを戻す、値は直接指定またはArValidator指定

ArList.java
   /** 指定インデックス以降に指定された値のインデックスを戻す、値は直接指定 */
   public static <$Value> int contains(List<$Value> list,int index,$Value value) 
   /** 指定インデックス以降に指定された値のインデックスを戻す、値はArValidator指定 */
   public static <$Value> int contains(List<$Value> list,int index,ArValidator<$Value> validator) 

[S00_00_33]

□ ListにArValidatorで指定された値が一つだけ存在するかを判定する

ArList.java
   /** ArValidatorで指定された値が一つだけ存在するかを判定する */
   public static <$Element> boolean containsOnlyOne(Collection<$Element> list,ArValidator<$Element> validator) 

□ ListにArValidatorで指定された値が一つ以上存在するかを判定する

ArList.java
   /** ArValidatorで指定された値が一つ以上存在するかを判定する */
   public static <T> boolean contains(Collection<T> collection,ArValidator<T> validator) 

□ ListにArValidatorで指定された値が存在しないことを判定する

ArList.java
   /** ArValidatorで指定された値が存在しないことを判定する */
   public static <$Element> boolean containsNone(Collection<$Element> list,ArValidator<$Element> validator)

□ Listのすべての要素がArValidatorで指定された値であることを判定する

ArList.java
   /** すべての要素がArValidatorで指定された値であることを判定する */
   public static <$Element> boolean containsAll(Collection<$Element> list,ArValidator<$Element> validator) 

□ List1の要素がすべてList0に含まれているかを判定する

ArList.java
   /** List1の要素がすべてList0に含まれているかを判定する */
   public static <$Value> boolean contains(List<$Value> list0,List<$Value> list1)

###Listの値の集約値(最小値、最大値、合計値、平均値、標準偏差)

  • Listの要素から取得される値の集約値を計算する、値はArCreatorで要素から取得する
  • 値はArCreatorで例えば以下のようなものから取得できる
    • 要素そのもの
    • 要素のフィールドの値
    • 要素から計算される値

□ Listの要素から取得される値の集約値を計算する、値はArCreatorで要素から取得する

ArList.java
   /** Collectionの要素から取得される値の最小値を計算する、値はArCreatorで要素から取得する */
   public static <T> Number min(Collection<T> list,ArCreator<T,? extends Number> creator) throws Exception
   /** Listの要素から取得される値の最小値のインデックスを求める、値はArCreatorで要素から取得する */
   public static <T> List<Integer> minIndex(List<T> list,ArCreator<T,? extends Number> creator) throws Exception
   /** Collectionの要素から取得される値の最大値を計算する、値はArCreatorで要素から取得する */
   public static <T> Number max(Collection<T> list,ArCreator<T,? extends Number> creator) throws Exception
   /** Listの要素から取得される値の最大値のインデックスを求める、値はArCreatorで要素から取得する */
   public static <T> List<Integer> maxIndex(List<T> list,ArCreator<T,? extends Number> creator) throws Exception
   /** Collectionの要素から取得される値の合計値を計算する、値はArCreatorで要素から取得する */
   public static <T> Number sum(Collection<T> list,ArCreator<T,? extends Number> creator) throws Exception
   /** Collectionの要素から取得される値の平均値を計算する、値はArCreatorで要素から取得する */
   public static <T> Double avg(Collection<T> list,ArCreator<T,? extends Number> creator) throws Exception
   /** Collectionの要素から取得される値の標準偏差値を計算する、値はArCreatorで要素から取得する */
   public static <T> Double standardDeviation(Collection<T> list,ArCreator<T,? extends Number> creator) throws Exception 

###Listの値の推移値(移動平均値、(初期or途中からの)変動率(値)、パーセント、(初期or途中からの)累積値)

  • Listの要素から取得される値の推移値を計算する
  • 推移値の種類としては次のものがある
    • 移動平均値
    • 移動合計値
    • 初期値からの変動率
    • 初期値からの変動幅
    • N個前との変動率
    • N個前との変動幅
    • 全体とのパーセント
    • 累積値
  • 値はArCreatorで例えば以下のようなものから取得できる
    • 要素そのもの
    • 要素のフィールドの値
    • 要素から計算される値

□ Listの要素から取得される値の推移値を計算する

ArList.java
   /** Listの要素から取得される値の移動平均値を計算する */
   public static <T> List<Double> movingAvg(List<T> list,ArCreator<T,? extends Number> creator,int span) throws Exception
   /** Listの要素から取得される値の移動平均値を計算して元のListに書き出す */
   public static <T> void movingAvg(List<T> list,ArCreator<T,? extends Number> creator,int span,String updateField) throws Exception
   /** Listの要素から取得される値の初期値からの変動率を計算する */
   public static <T> List<Double> fluctuationRatio(List<T> list,ArCreator<T,? extends Number> creator) throws Exception
   /** Listの要素から取得される値の初期値からの変動率を計算して元のListに書き出す */
   public static <T> void fluctuationRatio(List<T> list,ArCreator<T,? extends Number> creator,String updateField) throws Exception 
   /** Listの要素から取得される値の初期値からの変動幅を計算する */
   public static <T> List<? extends Number> fluctuationWidth(List<T> list,ArCreator<T,? extends Number> creator) throws Exception 
   /** Listの要素から取得される値の初期値からの変動幅を計算して元のListに書き出す */
   public static <T> void fluctuationWidth(List<T> list,ArCreator<T,? extends Number> creator,String updateField) throws Exception
   /** Listの要素から取得される値のspan個前からの変動率を計算する */
   public static <T> List<Double> fluctuationRatio(List<T> list,ArCreator<T,? extends Number> creator,int span) throws Exception
   /** Listの要素から取得される値のspan個前からの変動率を計算して元のListに書き出す */
   public static <T> void fluctuationRatio(List<T> list,ArCreator<T,? extends Number> creator,int span,String updateField) throws Exception
   /** Listの要素から取得される値のspan個前からの変動幅を計算する */
   public static <T> List<? extends Number> fluctuationWidth(List<T> list,ArCreator<T,? extends Number> creator,int span) throws Exception
   /** Listの要素から取得される値のspan個前からの変動幅を計算して元のListに書き出す */
   public static <T> void fluctuationWidth(List<T> list,ArCreator<T,? extends Number> creator,int span,String updateField) throws Exception 
   /** Listの要素から取得される値のパーセント値を計算する */
   public static <T> List<Double> percent(List<T> list,ArCreator<T,? extends Number> creator) throws Exception
   /** Listの要素から取得される値のパーセント値を計算して元のListに書き出す */
   public static <T> void percent(List<T> collection,ArCreator<T,? extends Number> creator,String updateField) throws Exception 
   /** Listの要素から取得される値の累積値を計算する */
   public static <T> List<? extends Number> accumulation(List<T> list,ArCreator<T,? extends Number> creator) throws Exception 
   /** Listの要素から取得される値のspain区間の合計値を計算する */
   public static <T> List<? extends Number> periodSumarize(List<T> list,ArCreator<T,? extends Number> creator,int span) throws Exception 

###Listの値のヒストグラム

  • Listの要素から取得される値のヒストグラムを作成する
  • 値はArCreatorで例えば以下のようなものから取得できる
    • 要素そのもの
    • 要素のフィールドの値
    • 要素から計算される値
  • 取得された値をArValidatorの配列で振り分ける
    • それぞれのArValidatorはそれぞれの値に対してtrue/falseを戻す

□ Listの要素から取得される値のヒストグラムを作成する

ArList.java
   /** Listの要素から取得される値のヒストグラムを作成する */
   public static <T0,T1> int[] histogram(Collection<T0> collection,ArCreator<T0,T1> creator,ArValidator<T1>[] validators) throws Exception

###二つのListを利用した値の変換

  • 最初のListを走査して、指定された値のインデックスを求める、次のListの上記のインデックスの値を戻す
ArList.java
  /** 最初のListを走査して、指定された値のインデックスを求める、次のListの上記のインデックスの値を戻す */
  public static <T0,T1> T1 getPartner(List<T0> orgValues,List<T1> desValues,T0 org)

## Listと(List、Set、配列)の等値判定(null値無視、重複値無視、順番無視も可能)

  • Listと(List、Set、配列)の等値判定を行う
  • その時に以下の指定を行うことができる
    • null値の無視
    • 重複値の無視
    • 順番の無視

□ Listと(List、Set、配列)の等値判定を行う

ArList.java
   /** 二つのListの等値判定を行う */
   public static <T> boolean equals(List<T> list0,List<T> list1)
   /** 二つのListの等値判定を行う.順番無視、null値無視、重複値無視の指定ができる */
   public static <T> boolean equals(List<T> list0,List<T> list1,ArSeqIgnore arSeq,ArNullIgnore arNull,ArDuplicateIgnore arDup) 
   /** Listと配列の等値判定を行う.順番無視、null値無視、重複値無視の指定ができる */
   public static <T> boolean equals(List<T> list0,T[] array1,ArSeqIgnore arSeq,ArNullIgnore arNull,ArDuplicateIgnore arDup) 
   /** ListとSetの等値判定を行う.null値無視、重複値無視の指定ができる */
   public static <T> boolean equals(List<T> list0,Set<T> set1,ArNullIgnore arNull,ArDuplicateIgnore arDup) 

###二つのListの集合演算(AND,OR,XOR,EXCEPT)

  • 二つのListのAND,OR,XOR,EXCEPTを求める

□ 二つのListのAND,OR,XOR,EXCEPTを求める

ArList.java
   /** 二つのListのANDを求める */
   public static <T> List<T> and(List<T> list0,List<T> list1)
   /** 二つのListのORを求める */
   public static <T> List<T> or(List<T> list0,List<T> list1)
   /** 二つのListのXORを求める */
   public static <T> List<T> xor(List<T> list0,List<T> list1) 
   /** 二つのListのEXCEPTを求める */
   public static <T> List<T> except(List<T> list0,List<T> list1)

##Set関連処理(ArSet)(01)
###概要

  • Setの生成(Set、List、配列、CSV文字列から)
  • Setの値の抽出
  • Setの値の変換、型の変換
  • Setの他の形式への変換
  • Setの値の存在チェック
  • Setの値の集約値の計算(最大値、最小値、合計値、平均値、標準偏差)
  • Setの値のヒストグラム
  • 二つのSetの集合演算(AND,OR,XOR,EXCEPT)
  • 二つのSetの等値判定、包含判定

###Setの生成(Set、List、配列、CSV文字列から)

  • Setをcloneする、SetとしてはCloneableでないことの対応
  • SetをListから生成する
  • Setを配列から生成する
  • SetをCSV文字列から生成する
  • Setをint配列から生成する
  • 一定間隔の数値のSetを生成する
ArSet.java
  /** Setをcloneする、SetとしてはCloneableでないことの対応 */
  public static <T> Set<T> clone(Set<T> set)
  /** SetをListから生成する */
  public static <T> Set<T> constructFromList(List<T> list) 
  /** Setを配列から生成する */
  public static <T> Set<T> constructFromArray(T[] array)
  /** SetをCSV文字列から生成する */
  public static Set<String> construct(String str,char sep) 
  /** SetをCSV文字列から生成する */
  public static Set<String> construct(String str)
  /** Setをint配列から生成する */
  public static Set<Integer> constructFromIntArray(int[] intArray)
  /** 一定間隔の数値のSetを生成する */
  public static Set<Integer> construct(int start,int count,int step)

###Setの値の抽出

  • Setから配列で指定された(指定されない)値を抽出して新しいSetを作成する
  • SetからArValidatorで指定された(指定されない)値を抽出して新しいSetを作成する
  • Setからnull値を除いて新しいSetを作成する

□ Setから配列で指定された(指定されない)値を抽出して新しいSetを作成する

ArSet.java
  /** Setから配列で指定された値を抽出して新しいSetを作成する */
  public static <T> Set<T> select(Set<T> set,T[] array)
  /** Setから配列で指定されない値を抽出して新しいSetを作成する */
  public static <T> Set<T> selectExcept(Set<T> set,T[] array)

□ SetからArValidatorで指定された(指定されない)値を抽出して新しいSetを作成する

ArSet.java
  /** SetからArValidatorで指定された値を抽出して新しいSetを作成する */
  public static <T> Set<T> select(Set<T> set,ArValidator<T> validator)
  /** SetからArValidatorで指定されない値を抽出して新しいSetを作成する */
  public static <T> Set<T> selectExcept(Set<T> set,ArValidator<T> validator) 

□ Setからnull値を除いて新しいSetを作成する

ArSet.java
  /** Setからnull値を除いて新しいSetを作成する */
  public static <T> Set<T> removeNull(Set<T> set) 

###Setの値の変換、型の変換

  • 新旧の値をMapで指定してSetの値を変換する、指定されなかった値は元のまま
  • 新旧の値をMapで指定して新しいSetを作成する、Setの型も変換される
ArSet.java
  /** 新旧の値をMapで指定してSetの値を変換する、指定されなかった値は元のまま */
  public static <T> void changeValue(Set<T> set,Map<T,T> map) 
  /** 新旧の値をMapで指定して新しいSetを作成する、Setの型も変換される */
  public static <T0,T1> Set<T1> changeValueType(Set<T0> set,ArCreator<T0,T1> creator) throws Exception 

###Setの他の形式への変換

  • SetをMapに変換する、キーは要素のフィールドを指定する
  • SetをMapに変換する、キーは要素をArCreatorで生成する
  • SetをArMatrixに変換する、キーは要素のフィールドを指定する
  • SetをArMatrixに変換する、キーは要素をArCreatorで生成する
  • SetをMapOnMap(二段Map)に変換する、キーは要素のフィールドを指定する
  • SetをMapOnMap(二段Map)に変換する、キーは要素をArCreatorで生成する
  • IntegerのSetをintの配列に変換する
ArSet.java
  /** SetをMapに変換する、キーは要素のフィールドを指定する */
  public static <T0,T1> Map<T1,T0> createMap(Collection<T0> collection,String keyField) throws Exception
  /** SetをMapに変換する、キーは要素からArCreatorで生成する */
  public static <T0, T1, T2> Map<T1,T2> createMap(Collection<T0> collection,ArCreator<T0,T1> creator1,ArCreator<T0,T2> creator2) throws Exception 
  /** SetをArMatrixに変換する、キーは要素のフィールドを指定する */
  public static <T0, T1, T2> ArMatrix<T0,T1,T2> createArMatrix(Collection<T2> collection,String key0Field,String key1Field) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, InvocationTargetException
  /** SetをArMatrixに変換する、キーは要素からArCreatorで生成する */
  public static <T0,T1,T2> ArMatrix<T0,T1,T2> createArMatrix(Collection<T2> collection,ArCreator<T2,T0> key0Creator,ArCreator<T2,T1> key1Creator) throws Exception 
  /** SetをMapOnMap(二段Map)に変換する、キーは要素のフィールドを指定する */
  public static  <T0,T1,T2> Map<T0,Map<T1,T2>> createMapOnMap(Collection<T2> collection,String key0Field,String key1Field) throws Exception
  /** SetをMapOnMap(二段Map)に変換する、キーは要素をArCreatorで生成する */
  public static  <T0,T1,T2> Map<T0,Map<T1,T2>> createMapOnMap(Collection<T2> collection,ArCreator<T2,T0> key0Creator,ArCreator<T2,T1> key1Creator) throws Exception
  /** IntegerのSetをintの配列に変換する */
  public static int[] integerSetToIntArray(Set<Integer> integerSet) 

###Setの値の存在チェック

  • Setの中にArValidatorに合致する値が一つだけ存在するかを判定する
  • Setの中にArValidatorに合致する値が存在するか判定する
  • Setの中にArValidatorに合致する値がまったく存在しないか判定する
  • Setの中の値がすべてArValidatorに合致するかを判定する
ArSet.java
  /** Setの中にArValidatorに合致する値が一つだけ存在するかを判定する */
  public static <$Element> boolean containsOnlyOne(Collection<$Element> list,ArValidator<$Element> validator) 
  /** Setの中にArValidatorに合致する値が存在するか判定する */
  public static <T> boolean contains(Collection<T> collection,ArValidator<T> validator)
  /** Setの中にArValidatorに合致する値がまったく存在しないか判定する */
  public static <$Element> boolean containsNone(Collection<$Element> list,ArValidator<$Element> validator)
  /** Setの中の値がすべてArValidatorに合致するかを判定する */
  public static <$Element> boolean containsAll(Collection<$Element> list,ArValidator<$Element> validator)

###Setの値の集約値の計算(最大値、最小値、合計値、平均値、標準偏差)

  • Setの要素をArCreatorで数値に変換して以下の値を計算する
    • 最大値、最小値、合計値、平均値、標準偏差
  • 数値への変換は次のようなものが考えられる
    • 要素そのもの
    • 要素のフィールドの値
    • 要素から計算される値
ArSet.java
  /** Setの要素をArCreatorで数値に変換して最小値を計算する */
  public static <T> Number min(Collection<T> set,ArCreator<T,? extends Number> creator) throws Exception
  /** Setの要素をArCreatorで数値に変換して最大値を計算する */
  public static <T> Number max(Collection<T> set,ArCreator<T,? extends Number> creator) throws Exception
  /** Setの要素をArCreatorで数値に変換して合計値を計算する */
  public static <T> Number sum(Collection<T> set,ArCreator<T,? extends Number> creator) throws Exception 
  /** Setの要素をArCreatorで数値に変換して平均値を計算する */
  public static <T> Double avg(Collection<T> collection,ArCreator<T,? extends Number> creator) throws Exception 
  /** Setの要素をArCreatorで数値に変換して標準偏差 */
  public static <T> Double standardDeviation(Collection<T> collection,ArCreator<T,? extends Number> creator) throws Exception 

###Setの値のヒストグラムの作成

  • Setの要素から取得される値のヒストグラムを作成する
  • 値はArCreatorで例えば以下のようなものから取得できる
    • 要素そのもの
    • 要素のフィールドの値
    • 要素から計算される値
  • 取得された値をArValidatorの配列で振り分ける
    • それぞれのArValidatorはそれぞれの値に対してtrue/falseを戻す
ArSet.java
  /** Setの要素から取得される値のヒストグラムを作成する */
  public static <T0,T1> int[] histogram(Collection<T0> collection,ArCreator<T0,T1> creator,ArValidator<T1>[] validators) throws Exception

###二つのSetの集合演算(AND,OR,XOR,EXCEPT)

  • 二つのSetのAND,OR,XOR,EXCEPTを求める
ArSet.java
  /** 二つのSetのANDを求める */
  public static <T> Set<T> and(Set<T> set0,Set<T> set1) 
  /** 二つのSetのORを求める */
  public static <T> Set<T> or(Set<T> set0,Set<T> set1) 
  /** 二つのSetのXORを求める */
  public static <T> Set<T> xor(Set<T> set0,Set<T> set1)
  /** 二つのSetのEXCEPTを求める */
  public static <T> Set<T> except(Set<T> set0,Set<T> set1) 

###二つのSetの等値判定、包含判定

  • 二つのSetの等値判定を行う、null値の無視を指定することができる
  • SetとListの等値判定を行う、null値の無視と重複値の無視を指定することができる
  • Setと配列の等値判定を行う、null値の無視と重複値の無視を指定することができる
ArSet.java
  /** 二つのSetの等値判定を行う */
  public static <T> boolean equals(Set<T> set0,Set<T> set1) 
  /** 二つのSetの等値判定を行う、null値の無視を指定することができる */
  public static <T> boolean equals(Set<T> set0,Set<T> set1,ArNullIgnore arNull)
  /** SetとListの等値判定を行う、null値の無視と重複値の無視を指定することができる */
  public static <T> boolean equals(List<T> list0,Set<T> set1,ArNullIgnore arNull,ArDuplicateIgnore arDup)
  /** Setと配列の等値判定を行う、null値の無視と重複値の無視を指定することができる */
  public static <T> boolean equals(Set<T> set0,T[] array1,ArNullIgnore arNull,ArDuplicateIgnore arDup) 

##Map関連処理(ArMap)(02)
###概要

  • Mapの生成 from(Map,Collection,Csv,TaggedCsv,配列,二次元配列)
  • Mapの値の設定(オブジェクトからキーと値を抽出)
  • Mapの等値判定(判定除外キーの指定)
  • Mapの包含判定(判定除外キーの指定)
  • Mapの要素の抽出(値、キーの条件指定)
  • Mapのキーの抽出(値、キーの条件指定)
  • Mapの集合演算(AND,OR,XOR,EXCEPT)
  • Mapのキーの値の変換
  • Mapの値の変換、値の型の変換
  • Mapの集約値の計算(最小値、最大値、合計値、平均値、標準偏差)
  • Mapのその他の処理

###Mapの生成 from(Map,Collection,Csv,TaggedCsv,配列,二次元配列)

  • Mapをcloneする、Map自身はCloneableでないことの対応
  • CollectionからMapを生成する、キーは指定されたフィールド
  • CollectionからMapを生成する、キーはArCreatorで生成する
  • CSV文字列からMapを生成する、キーは配列で指定する、セパレータを指定できる
  • TaggedCSV文字列からMapを生成する、セパレータを指定できる
  • 二つの配列からMapを生成する
  • 二次元配列からMapを生成する
ArMap.java
  /** Mapをcloneする、Map自身はCloneableでないことの対応 */
  public static <$Key, $Value> Map<$Key,$Value> clone(Map<$Key,$Value> map) 
  /** CollectionからMapを生成する、キーは指定されたフィールド */
  public static <$Key, $Value> Map<$Key,$Value> constructFromCollection(Collection<$Value> collection,String keyField) throws Exception 
  /** CollectionからMapを生成する、キーはArCreatorで生成する */
  public static <$Key,$Value> Map<$Key,$Value> constructFromCollection(Collection<$Value> collection,ArCreator<$Value,$Key> creator) throws Exception 
  /** CSV文字列からMapを生成する、キーは配列で指定する、セパレータを指定できる */
  public static Map<String,String> constructFromCsv(String str,char sep,String[] keys) 
  /** TaggedCSV文字列からMapを生成する、セパレータを指定できる */
  public static Map<String,String> constructFromTaggedCsv(String str,ArCsvConf conf) 
  /** TaggedCSV文字列からMapを生成する、セパレータはカンマとイコール */
  public static Map<String,String> constructFromTaggedCsv(String str) 
  /** 二つの配列からMapを生成する */
  public static <$Key, $Value> Map<$Key,$Value> construct($Key[] keys,$Value[] values) 
  /** 二次元配列からMapを生成する */
  public static <T> Map<T,T> construct(T[][] keysAndValues)
  /** 二次元配列からMapを生成する */
  public static <T> Map<T,T> construct(T[][] keysAndValues,int keyIndex,int valueIndex)

###Mapの値の設定(オブジェクトからキーと値を抽出)

  • 指定されたオブジェクトからキーと値を抽出してMapに設定する
  • キーと値は、下記の方法で抽出できる
    • オブジェクトそのもの
    • オブジェクトのフィールドの値
    • オブジェクトからArCreatorで作成される値

###Mapの等値判定(判定除外キーの指定)

  • 二つのMapのすべての要素(キーと値)が等しいかを判定する
  • 二つのMapの指定されたキーの要素(キーと値)が等しいかを判定する
    • 対象キーは配列またはSetで指定する
  • 二つのMapの指定されたキー以外の要素(キーと値)が等しいかを判定する
    • 除外キーは配列またはSetで指定する
ArMap.java
  /** 二つのMapのすべての要素(キーと値)が等しいかを判定する */
  public static <$Key, $Value> Boolean equals(Map<$Key,$Value> map0,Map<$Key,$Value> map1)
  /** 二つのMapの指定されたキーの要素(キーと値)が等しいかを判定する */
  public static <$Key, $Value> Boolean equalsByKey(Map<$Key,$Value> map0,Map<$Key,$Value> map1,Set<$Key> keys) 
  /** 二つのMapの指定されたキーの要素(キーと値)が等しいかを判定する */
  public static <$Key, $Value> Boolean equalsByKey(Map<$Key,$Value> map0,Map<$Key,$Value> map1,$Key[] keys)
  /** 二つのMapの指定されたキー以外の要素(キーと値)が等しいかを判定する */
  public static <$Key, $Value> Boolean equalsExceptKey(Map<$Key,$Value> map0,Map<$Key,$Value> map1,Set<$Key> keys) 
  /** 二つのMapの指定されたキー以外の要素(キーと値)が等しいかを判定する */
  public static <$Key, $Value> Boolean equalsExceptKey(Map<$Key,$Value> map0,Map<$Key,$Value> map1,$Key[] keys) 

###Mapの包含判定(判定除外キーの指定)

  • map0がmap1のすべての要素(キーと値)を含むかを判定する
  • mapがmap1の指定されたキー以外のの要素(キーと値)を含むかを判定する
    • 除外キーは配列またはSetで指定する
ArMap.java
  /** map0がmap1のすべての要素(キーと値)を含むかを判定する */
  public static <$Key, $Value> Boolean contains(Map<$Key,$Value> map0,Map<$Key,$Value> map1) 
  /** mapがmap1の指定されたキー以外のの要素(キーと値)を含むかを判定する */
  public static <$Key, $Value> Boolean containsExceptKey(Map<$Key,$Value> map0,Map<$Key,$Value> map1,Set<$Key> keys)
  /** mapがmap1の指定されたキー以外のの要素(キーと値)を含むかを判定する */
  public static <$Key, $Value> Boolean containsExceptKey(Map<$Key,$Value> map0,Map<$Key,$Value> map1,$Key[] keys) 

###Mapの要素の抽出(値、キーの条件指定)

  • null値を除外して新しいMapを作成する
  • 指定されたキーで抽出して新しいMapを作成する
    • 対象キーは配列またはSetまたはArValidatorで指定する
  • 指定された以外のキーで抽出して新しいMapを作成する
    • 除外キーは配列またはSetまたはArValidatorで指定する
  • 指定された値を含む要素を抽出して新しいMapを作成する
    • 値の指定は値を直接、ArValidator、配列、Setで指定する
  • 指定された値を含まない要素を抽出して新しいMapを作成する
    • 値の指定は値を直接、ArValidator、配列、Setで指定する

□ null値を除外して新しいMapを作成する

ArMap.java
  /** null値を除外して新しいMapを作成する */
  public static <$Key, $Value> Map<$Key,$Value> selectNullExcept(Map<$Key,$Value> map) 

□ 指定されたキーで抽出して新しいMapを作成する

ArMap.java
  /** 指定されたキーで抽出して新しいMapを作成する */
  public static <$Key,$Value> Map<$Key,$Value> selectByKey(Map<$Key,$Value> map,$Key[] keys) 
  /** 指定されたキーで抽出して新しいMapを作成する */
  public static <$Key,$Value> Map<$Key,$Value> selectByKey(Map<$Key,$Value> map,Set<$Key> keys) 
  /** 指定されたキーで抽出して新しいMapを作成する */
  public static <$Key, $Value> Map<$Key,$Value> selectByKey(Map<$Key,$Value> map,ArValidator<$Key> validator)

□ 指定された以外のキーで抽出して新しいMapを作成する

ArMap.java
  /** 指定された以外のキーで抽出して新しいMapを作成する */
  public static <$Key,$Value> Map<$Key,$Value> selectByKeyExcept(Map<$Key,$Value> map,$Key[] keys) 
  /** 指定された以外のキーで抽出して新しいMapを作成する */
  public static <$Key,$Value> Map<$Key,$Value> selectByKeyExcept(Map<$Key,$Value> map,Set<$Key> keys) 
  /** 指定された以外のキーで抽出して新しいMapを作成する */
  public static <$Key, $Value> Map<$Key,$Value> selectByKeyExcept(Map<$Key,$Value> map,ArValidator<$Key> validator)

□ 指定された値を含む要素を抽出して新しいMapを作成する

ArMap.java
  /** 指定された値を含む要素を抽出して新しいMapを作成する */
  public static <$Key, $Value> Map<$Key,$Value> selectByValue(Map<$Key,$Value> map,$Value element) 
  /** 指定された値を含む要素を抽出して新しいMapを作成する */
  public static <$Key, $Value> Map<$Key,$Value> selectByValue(Map<$Key,$Value> map,ArValidator<$Value> validator)
  /** 指定された値を含む要素を抽出して新しいMapを作成する */
  public static <$Key,$Value> Map<$Key,$Value> selectByValue(Map<$Key,$Value> map,Collection<$Value> values) 
  /** 指定された値を含む要素を抽出して新しいMapを作成する */
  public static <$Key,$Value> Map<$Key,$Value> selectByValue(Map<$Key,$Value> map,$Value[] values)

□ 指定された値を含まない要素を抽出して新しいMapを作成する

ArMap.java
  /** 指定された値を含まない要素を抽出して新しいMapを作成する */
  public static <$Key, $Value> Map<$Key,$Value> selectByValueExcept(Map<$Key,$Value> map,ArValidator<$Value> validator)
  /** 指定された値を含まない要素を抽出して新しいMapを作成する */
  public static <$Key,$Value> Map<$Key,$Value> selectByValueExcept(Map<$Key,$Value> map,Collection<$Value> values) 
  /** 指定された値を含まない要素を抽出して新しいMapを作成する */
  public static <$Key,$Value> Map<$Key,$Value> selectByValueExcept(Map<$Key,$Value> map,$Value[] values) 

###Mapのキーの抽出(値、キーの条件指定)

  • 指定された値でキーを抽出する
    • 値の指定は値を直接、ArValidator、配列、Setで指定する
  • 指定された値以外の値でキーを抽出する
    • 値の指定は値を直接、ArValidator、配列、Setで指定する

□ 指定された値でキーを抽出する

ArMap.java
  /** 指定された値でキーを抽出する */
  public static <$Key,$Value> Set<$Key> getKeysFromValue(Map<$Key,$Value> map,ArValidator<$Value> validator)
  /** 指定された値でキーを抽出する */
  public static <$Key,$Value> Set<$Key> getKeysFromValue(Map<$Key,$Value> map,Collection<$Value> coll) 
  /** 指定された値でキーを抽出する */
  public static <$Key,$Value> Set<$Key> getKeysFromValue(Map<$Key,$Value> map,$Value[] array) 

□ 指定された値以外の値でキーを抽出する

ArMap.java
  /** 指定された値以外の値でキーを抽出する */
  public static <$Key,$Value> Set<$Key> getKeysFromValueExcept(Map<$Key,$Value> map,ArValidator<$Value> validator) 
  /** 指定された値以外の値でキーを抽出する */
  public static <$Key,$Value> Set<$Key> getKeysFromValueExcept(Map<$Key,$Value> map,Collection<$Value> coll) 
  /** 指定された値以外の値でキーを抽出する */
  public static <$Key,$Value> Set<$Key> getKeysFromValueExcept(Map<$Key,$Value> map,$Value[] array) 

###Mapの集合演算(AND,OR,XOR,EXCEPT)

  • 二つのMapの集合演算を行い、新しいMapを作成する
    • ANDは、キーのみでのANDとキーと値でANDすることが可能
    • EXCEPTは、キーのみでのEXCEPTとキーと値でEXCEPTすることが可能

□ 二つのMapの集合演算を行い、新しいMapを作成する

ArMap.java
  /** 二つのMapのキーのANDで新しいMapを作成する */
  public static <$Key,$Value> Map<$Key,$Value> andKey(Map<$Key,$Value> map0,Map<$Key,$Value> map1)
  /** 二つのMapのキーと値のANDで新しいMapを作成する */
  public static <$Key,$Value> Map<$Key,$Value> andValue(Map<$Key,$Value> map0,Map<$Key,$Value> map1,ArComparator<$Value> comparator) throws InstantiationException, IllegalAccessException
  /** 二つのMapのXORで新しいMapを作成する */ 
  public static <$Key, $Value> Map<$Key,$Value> xor(Map<$Key,$Value> map0,Map<$Key,$Value> map1)
  /** 二つのMapのキーのEXCEPTで新しいMapを作成する */ 
  public static <$Key, $Value> Map<$Key,$Value> exceptKey(Map<$Key,$Value> map0,Map<$Key,$Value> map1)
  /** 二つのMapのキーと値のEXCEPTで新しいMapを作成する */
  public static <$Key,$Value> Map<$Key,$Value> exceptValue(Map<$Key,$Value> map0,Map<$Key,$Value> map1,ArComparator<$Value> comparator)

###Mapのキーの値の変換

  • Mapのキーを別の値に変換する
    • 新旧のキーはMapまたは配列またはArCreatorで指定する

□ Mapのキーを別の値に変換する

ArMap.java
  /** Mapのキーを別の値に変換する */
  public static <$Key, $Value> Map<$Key,$Value> changeKey(Map<$Key,$Value> map,Map<$Key,$Key> keyMap) 
  /** Mapのキーを別の値に変換する */
  public static <$Key,$Value> Map<$Key,$Value> changeKey(Map<$Key,$Value> map,$Key[] oldKeys,$Key[] newKeys)
  /** Mapのキーを別の値に変換する */
  public static <$Key,$Value> Map<$Key,$Value> changeKey(Map<$Key,$Value> map,$Key[][] keys) 

###Mapの値の変換、値の型の変換

  • Mapの値を変換する
    • 新旧の値は、MapまたはArCreatorで指定する
  • Mapの値の型を変換して新しいMapを作成する
    • 新旧の値の型・値は、MapまたはArCreatorで指定する

□ Mapの値を変換する

ArMap.java
  /** Mapの値を変換する */
  public static  <$value,$key> void changeValue(Map<$key,$value> map,Map<$value,$value> valueMap)

□ Mapの値の型を変換して新しいMapを作成する

ArMap.java
  /** Mapの値の型を変換して新しいMapを作成する */
  public static <$Key,$Value,$NewValue> Map<$Key,$NewValue> changeValueType(Map<$Key,$Value> map,Map<$Value,$NewValue> valueMap) throws Exception 
  /** Mapの値の型を変換して新しいMapを作成する */
  public static <$Key,$Value,$NewValue> Map<$Key,$NewValue> changeValueType(Map<$Key,$Value> map,ArCreator<$Value,$NewValue> creator) throws Exception 

###Mapの集約値の計算(最小値、最大値、合計値、平均値、標準偏差)

  • Mapの値から集約値を計算する
     * 対象値を取得する方法は次の通り。
      * 値そのもの
      * 値のフィールド
      * 値からArCreatorで生成

□ Mapの値から集約値を計算する

ArMap.java
  /** Mapの値から最大値を計算する */
  public static <$KeyT> Number max(Map<$KeyT,? extends Number> map) 
  /** Mapの値から最小値を計算する */
  public static <$Key> Number min(Map<$Key,? extends Number> map) 
  /** Mapの値から合計値を計算する */
  public static <$Key> Number sum(Map<$Key,? extends Number> map)
  /** Mapの値から平均値を計算する */
  public static <$Key> Double avg(Map<$Key,? extends Number> map)
  /** Mapの値から最小値を計算する */
  public static  <$Key, $Value> Number min(Map<$Key,$Value> map,ArCreator<$Value,? extends Number> creator) throws Exception 
  /** Mapの値から最大値を計算する */
  public static <$Key, $Value> Number max(Map<$Key,$Value> map,ArCreator<$Value,? extends Number> creator) throws Exception
  /** Mapの値から合計値を計算する */
  public static <$Key, $Value> Number sum(Map<$Key,$Value> map,ArCreator<$Value,? extends Number> creator) throws Exception 
  /** Mapの値から平均値を計算する */
  public static <$Key, $Value> Double avg(Map<$Key,$Value> map,ArCreator<$Value,? extends Number> creator) throws Exception 

###Mapのその他の処理

  • Mapのキーと値を逆転する
  • 値がIntegerのMapの値を加減乗除する
ArMap.java
  /** Mapのキーと値を逆転する */
  public static <$Key,$Value> Map<$Value,$Key> reverse(Map<$Key,$Value> map) {
  /** 値がIntegerのMapの値を加減乗除する */
  public static <$Key> int calc(Map<$Key,Integer> map,$Key key,ArCalc op,Integer value)

##配列関連処理(ArArray)(03)
###概要

  • 配列の値の存在判定、二つの配列を利用した値の変換
  • 配列の要素のカウント、重複チェック
  • 配列のnull値の存在判定、インデックスの取得
  • 配列の変更 ソート、逆順、値の変換、二次元配列の入替
  • 配列のSet,Listへの変換
  • 配列のMapへの変換
  • 配列とTaggedCsvとの変換
  • 配列、List、Setの等値判定 null無視、重複無視、順番無視
  • 二つの配列の包含関係判定
  • 配列のリフレクション(配列か否か、配列の要素の判定、プリミティブか否か)

###配列の値の存在判定、二つの配列を利用した値の変換

  • 指定された値のインデックスを戻す
    • 値は直接指定かArValidator指定
  • 二つの配列を利用した値の変換
    • 一つの配列から指定された値のインデックスを取得し、もう一つの配列の値を戻す

□ 指定された値のインデックスを戻す

ArArray.java
  /** 指定要素のインデックスを戻す.存在しない場合はサイズがゼロとなる. */
  public static <T> List<Integer> getIndexes(T[] list,T element)
  /** 指定要素のインデックスを戻す.存在しない場合はサイズがゼロとなる. */
  public static <T> List<Integer> getIndexes(T[] list,ArValidator<T> validator)

□ 二つの配列を利用した値の変換

ArArray.java
  /** orgValuesの中からorgに一致するインデックスを求めてdesValuesの中の対応する要素を戻す.   */
  public static <T0,T1> T1 getPartner(T0[] orgValues,T1[] desValues,T0 org,ArComparator comparator) 
  /** orgValuesの中からorgに一致するインデックスを求めてdesValuesの中の対応する要素を戻す.  */
  public static <T1> T1 getPartner(int[] orgValues,T1[] desValues,Integer org,ArComparator comparator) 
  /** orgValuesの中からorgに一致するインデックスを求めてdesValuesの中の対応する要素を戻す.  */
  public static <T0> Integer getPartner(T0[] orgValues,int[] desValues,T0 org,ArComparator comparator) 
  /** valuesArray[][orgIndex]の中からorgに一致するものを見つけ、valuesArray[][desIndex]の値を戻す.   */
  public static <T> T getPartner(T[][] valuesArray,int orgIndex,int desIndex,T org) 
  /** valuesArray[][orgIndex]の中からorgに一致するものを見つけ、valuesArray[][desIndex]の値を戻す.   */
  public static int getPartner(int[][] valuesArray,int orgIndex,int desIndex,int org) 

###配列の値のカウント、重複チェック

  • 配列の中に重複値があるかを判定する
  • 配列の中の指定値の数をカウントする
    • 値は直接指定あるいはArValidator指定
  • 配列の中の指定値のインデックスを戻す
    • 値は直接指定あるいはArValidator指定

□ 配列の中に重複値があるかを判定する

ArArray.java
  /** 配列の中に重複があるかをチェックする */
  public static <T> boolean duplicated(T... array) 

□ 配列の中の指定値の数をカウントする

ArArray.java
  /** 配列の中の指定要素の数をカウントする. */
  public static <T> int count(T[] array,T element)
  /** 配列の中の指定要素の数をカウントする. */
  public static <T> int count(T[] array,ArValidator<T> validator)

□ 配列の中の指定値のインデックスを戻す

ArArray.java

###配列のnull値の存在判定、インデックスの取得

  • 配列の中にnull値があるかを判定する
  • 配列のすべての値がnullである(でない)かを判定する
  • 配列の一つの値だけがnullであるか(でない)かを判定する
  • 配列の中のnull値のインデックスを戻す

□ 配列の中にnull値があるかを判定する

ArArray.java

□ 配列のすべての値がnullである(でない)かを判定する

ArArray.java
  /** すべての引数がnullでない場合にtrueを戻す.(一つでもnullであればfalse). */
  public static boolean allNotNull(Object... objs)

□ 配列の一つの値だけがnullであるか(でない)かを判定する

ArArray.java
  /** 一つの引数だけがnullの場合trueを戻す. */
  public static boolean oneNull(Object... objs) 
  /** 一つの引数だけがnullでない場合trueを戻す. */
  public static boolean oneNotNull(Object... objs) 

□ 配列の中のnull値のインデックスを戻す

ArArray.java
  /**  配列のnull値のインデックスを戻す. */
  public static <T> List<Integer> getNullIndexes(T... values) {
  /** 配列の中にnullが含まれているかをチェックする.含まれていればtrue.  */
  public static <T> boolean containsNull(T... array)

###配列の変更 ソート、逆順、値の変換、二次元配列の入替

  • Comparableの配列をソートする、Comparatorを指定したくないときのため
  • 配列の二つの要素を入れ替える
  • 配列の要素を逆順にする
  • 配列の値をMapで指定された別の値に変換する
  • 配列からnull値を削除する、Listで戻されるので必要ならば自分で配列にする
  • 二次元配列を入れ替える(M×N⇒N×M)、int,double,Stringのみ

□ Comparableの配列をソートする、Comparatorを指定したくないときのため

ArArray.java
  /** Comparableの配列をソートする */
  public static void sort(Comparable[] array,ArSortDir dir) 

□ 配列の二つの要素を入れ替える

ArArray.java
  /** 二つの要素を入れ替える */
  public static <T> void swap(T[] array,int i0,int i1) 

□ 配列の要素を逆順にする

ArArray.java
  /** 要素を逆順にする */
  public static <T> void reverse(T[] array) 

□ 配列の値をMapで指定された別の値に変換する

ArArray.java
  /** 配列の値をMapで指定された別の値に変換する.指定されない値は元のまま */
  public static <T> void changeValue(T[] array,Map<T,T> map) 

□ 配列からnull値を削除する、Listで戻されるので必要ならば自分で配列にする

ArArray.java
  /**  配列からnullを削除する.注、戻り値を配列にしたい時は呼び出し側で toArray(new String[]{})のようにする.  */
  public static <T> List<T> removeNull(T... values)

□ 二次元配列を入れ替える(M×N⇒N×M)、int,double,Stringのみ

ArArray.java
  /** 二次元配列を入れ替える(M×N⇒N×M) */
  public static int[][] exchange(int[][] array) 
  /** 二次元配列を入れ替える(M×N⇒N×M) */
  public static double[][] exchange(double[][] array) 
  /** 二次元配列を入れ替える(M×N⇒N×M) */
  public static String[][] exchange(String[][] array) {

###配列のSet,Listへの変換

  • 配列をSetに変換する
  • int配列をSetにする
  • int配列をIntegerのListに変換する
  • 配列をListにする、Arrays#asListで生成されたListは変更できないことの対応
ArArray.java
  /**  arrayをSet<T>に変換する. */
  public static <T> Set<T> toSet(T... array) throws InstantiationException, IllegalAccessException
  /** int[]をSetにする. */
  public static Set<Integer> toSet(int[] args) 
  /**  int[]をList<Integer>に変換する. */
  public static List<Integer> toList(int[] intArray) 
  /**
   * 配列をListにする.<br>
   * 注、Arrays.asListはjava.util.Arrays$ArrayListを戻すのでjava.util.ArrayListを戻すために実装する.<br>
   * 注、java.util.Arrays$ArrayListは要素を追加できない.<br>
   */
  public static <T> List<T> toList(T... array) 

###配列のMapへの変換

  • 二つの配列からMapを生成する.
  • 二次元配列からMapを生成する.[0]がキー、[1]が値
  • 二次元配列からMapを作成する.キーと値のインデックスを指定する
ArArray.java
  /** 二つの配列からMapを生成する. */
  public static <T0, T1> Map<T0,T1> toMap(T0[] keys,T1[] values) 
  /**
   *  二次元配列からMapを生成する.
   *  keysAndValues[0]がキー、keysAndValues[1]が値になる.
   */
  public static <T> Map<T,T> toMap(T[][] keysAndValues) 
  /** 二次元配列からMapを作成する.  */
  public static <T> Map<T,T> toMap(T[][] keysAndValues,int keyIndex,int valueIndex) {

###配列とTaggedCsvとの変換

  • TaggedCsv(形式の文字列)を二つの配列に変換する
  • TaggedCsv(形式の文字列)を二次元配列に変換する
  • 二次元配列からTaggedCsv(形式の文字列)に変換する
  • 二つの配列からTaggedCsv(形式の文字列)に変換する
ArArray.java
  /**
   *  TaggedCsv(形式の文字列)を二つの配列に変換する.
   *  @return Object[0]はString[]でフィールド名の配列、Object[1]はString[]で値の配列.
   */
  public static Object[] fromTaggedCsvToTwoArrays(String taggedCsv,ArCsvConf conf) 
  /**
   *  TaggedCsv(形式の文字列)を二次元配列に変換する.
   *  @return 変換後の配列.[][0]はフィールド名、[][1]は値.
   */
  public static String[][] fromTaggedCsvToTwoDimArray(String taggedCsv,ArCsvConf conf) 
  /** 二次元配列からTaggedCsv(形式の文字列)に変換する. */
  public static String fromTwoDimArrayToTaggedCsv(String[][] twoDimArray,ArCsvConf conf) 
  /** 二つの配列からTaggedCsv(形式の文字列)に変換する. */
  public static String fromTwoArraysToTaggedCsv(String[] nameArray,String[] valueArray,ArCsvConf conf) 

###配列、List、Setの等値判定 null無視、重複無視、順番無視

  • 二つの配列の等値判定
  • 二つの配列の等値判定、null値無視、重複地無視、順番無視の指定ができる
  • 配列とListの等値判定、null値無視、重複地無視、順番無視の指定ができる
  • 配列とSetの等値判定、、null値無視、重複地無視の指定ができる
ArArray.java
 /** 二つの配列が等しいかを判定する.配列でないものを渡すとRuntimeExceptionとなる.   */
  public static boolean equals(Object obj0,Object obj1) 
  /**
   *  二つの配列が等しいかを判定する.
   *  @param arSeq 順番を無視するか否か.IGNOREならば順番が違っても等しいと判定する.
   *  @param arNull nullを無視するか否か.IGNOREならばnullをスキップして判定する.
   *  @param arDup 重複を無視するか?.IGNOREならば重複があっても等しいと判定する.
   */
  public static <T> boolean equals(T[] array0,T[] array1,ArSeqIgnore arSeq,ArNullIgnore arNull,ArDuplicateIgnore arDup) 
  /**
   *  Listと配列が等しいかを判定する.
   *  @param arSeq 順番を無視するか否か.IGNOREならば順番が違っても等しいと判定する.
   *  @param arNull nullを無視するか否か.IGNOREならばnullをスキップして判定する.
   *  @param arDup 重複を無視するか?.IGNOREならば重複があっても等しいと判定する.
   */
  public static <T> boolean equals(List<T> list0,T[] array1,ArSeqIgnore arSeq,ArNullIgnore arNull,ArDuplicateIgnore arDup) 
  /**
   *  Setと配列が等しいかを判定する.
   *  @param arNull nullを無視するか否か.IGNOREならばnullをスキップして判定する.
   *  @param arDup 重複を無視するか?.IGNOREならば重複があっても等しいと判定する.
   */
  public static <T> boolean equals(Set<T> set0,T[] array1,ArNullIgnore arNull,ArDuplicateIgnore arDup) 

###二つの配列の包含関係判定

  • 配列Bの要素がすべて配列Aに含まれているかチェックする.
    • オブジェクト、int、longが可能
  • 配列Bの要素の中に配列Aに含まれていないものがあるかチェックする.
    • オブジェクト、int、longが可能
ArArray.java
  /**  包含チェック. 配列Bの要素がすべて配列Aに含まれているかチェックする. */
  public static <T> Boolean contains(T[] arrayA,T... arrayB)
  /**  包含チェック. 配列Bの要素の中に配列Aに含まれていないものがあるかチェックする. */
  public static <T> Boolean notContains(T[] arrayA,T... arrayB) 
  /**  包含チェック. 配列Bのすべての要素が配列Aに含まれているかチェックする. */
  public static Boolean contains(int[] arrayA,int[] arrayB) 
  /**  包含チェック. 配列Bの中に配列Aに含まれていないものがあるかチェックする.  */
  public static Boolean notContains(int[] arrayA,int[] arrayB) 
  /** 包含チェック.配列Bの要素がすべて配列Aに含まれているかチェックする. */
  public static Boolean contains(long[] arrayA,long[] arrayB) {
  /**  包含チェック. 配列Bの中に配列Aに含まれていないものがあるかチェックする. */
  public static Boolean notContains(long[] arrayA,long[] arrayB) {

###配列のリフレクション(配列か否か、配列の要素の判定、プリミティブか否か)

  • 配列か否かを判定する.
  • 配列の要素のタイプを取得する
  • 配列の要素がプリミティブタイプであるか判定する.
ArArray.java
  /**  配列か否かの判定. nullの場合はnullを戻す. */
  public static Boolean isArray(Object obj) 
  /**  配列の要素のタイプを取り出す.objは配列であること.配列でなければnullを戻す.  */
  public static Class getArrayComponentType(Object obj) 
  /**  配列の要素がプリミティブタイプであるか判定する. objが配列でないときはnullを戻す. */
  public static Boolean arrayComponentIsPrimitive(Object obj) 

##数値配列の処理(ArMath)(04)

###概要

当クラスはdouble配列を主に扱う。

  • 一次元・二次元数値配列の生成と設定
  • 数値配列の形式の変換 二次元配列の行や列の抽出、一次元⇔二次元変換
  • 数値配列の型の変換 primitive⇔wrapper、int⇔Integerなど
  • 数値配列の値の集約(最小値、最大値、合計値、平均値、標準偏差)
  • 数値配列から条件(大小など)による値の抽出
  • 数値配列の逆順、ランダマイズ
  • 数値配列の指定数値との演算
  • 数値配列の推移値(移動平均など)の計算
  • 数値配列からヒストグラムの作成
  • 二つの数値配列間の計算
  • 一次元配列、二次元配列、Map、二次元Map上の数値の加減乗除

###一次元・二次元数値配列の生成と設定

  • 一次元double配列を生成する、既存の一次元double配列に値を設定する
    *値はArGeneratorまたはArCreatorで作成される
  • 二次元double配列を生成する、既存の二次元double配列に値を設定する
    *値はArGeneratorまたはArCreator2dで作成される

□ 一次元double配列を生成する、既存の一次元double配列に値を設定する

ArMath.java
  /** 一次元配列の生成 */
  public static double[] doubleArray(int size,ArGenerator<Double> generator)
  /** 一次元配列の生成,creatorの引数には配列のインデックスが指定される. */
  public static double[] doubleArray(int size,ArCreator<Integer,Double> creator) throws Exception 
  /** 一次元配列の設定 */
  public static void fill(double[] doubleArray,ArGenerator<Double> generator) 
  /** 一次元配列の設定.creatorの引数には配列のインデックスが指定される. */
  public static void fill(double[] doubleArray,ArCreator<Integer,Double> creator) throws Exception 

□ 二次元double配列を生成する、既存の二次元double配列に値を設定する

ArMath.java
  /** 二次元配列の生成 */
  public static double[][] doubleArray2D(int sizeRow,int sizeCol,ArGenerator<Double> generator)
  /** 二次元配列の生成 creatorの引数には配列のインデックスが指定される.*/
  public static double[][] doubleArray2D(int sizeRow,int sizeCol,ArCreator2d<Integer,Integer,Double> creator) throws Exception 
  /** 二次元配列の設定 */
  public static void fill(double[][] doubleArray2D,ArGenerator<Double> generator) 
  /** 二次元配列の設定.creatorの引数には配列のインデックスが指定される. */
  public static void fill(double[][] doubleArray2D,ArCreator2d<Integer,Integer,Double> creator) throws Exception 

###数値配列の形式の変換 二次元配列の行や列の抽出、一次元⇔二次元変換

  • 二次元配列の行・列の抽出
  • 二次元配列のRow/Column交換
  • 一次元配列 ⇔ 二次元配列

□ 二次元配列の行・列の抽出

ArMath.java
  /** 二次元配列の行・列の抽出 */
  public static double[] extract(double[][] doubleArray,int index,ArTableRC rowCol)

□ 二次元配列のRow/Column交換

ArMath.java
  /** 二次元配列のRow/Column交換 */
  public static double[][] exchangeRowColumn(double[][] doubleArray) 

□ 一次元配列 ⇔ 二次元配列

ArMath.java
  /** 一次元配列 ⇒ 二次元配列 */
  public static double[][] toTwoDim(double[] doubleArray,int colCount) 
  /** 二次元配列 ⇒ 一次元配列 */
  public static double[] toOneDim(double[][] doubleArray) 

###数値配列の型の変換 primitive⇔wrapper、int⇔Integerなど

  • int[] ⇔ Integer[]
  • int[][] ⇔ Integer[][]
  • double[] ⇔ Double[]
  • double[][] ⇔ Double[][]
  • int[] ⇔ double[]
  • int[][] ⇔ double[][]
  • double[][]から指定されたカラムを抽出する
  • DoubleのList ⇒ Double[]

□ int[] ⇔ Integer[]

ArMath.java
  /** int[]⇒Integer[] */
  public static Integer[] convertIntArrayToIntegerArray(int[] intArray) 
  /** Integer[]⇒int[] */
  public static int[] convertIntegerArrayToIntArray(Integer[] integerArray) 

□ int[][] ⇔ Integer[][]

ArMath.java
  /** int[][]⇒Integer[][] */
  public static Integer[][] convertIntArray2dToIntegerArray2d(int[][] intArray2D) 
  /** Integer[][]⇒int[][] */
  public static int[][] convertIntegerArray2dToIntArray2d(Integer[][] integetArray2D) 

□ double[] ⇔ Double[]

ArMath.java
  /** double[]⇒Double[] */
  public static Double[] convertDblArrayToDoubleArray(double[] doubleArray)
  /** Double[]⇒double[] */
  public static double[] convertDoubleArrayToDblArray(Double[] doubleArray)

□ double[][] ⇔ Double[][]

ArMath.java
  /** Double[]⇒double[] */
  public static double[] convertDoubleArrayToDblArray(Double[] doubleArray) 
  /** double[][]⇒Double[][] */
  public static Double[][] convertDblArray2dToDoubleArray2d(double[][] doubleArray2d) 

□ int[] ⇔ double[]

ArMath.java
  /** int[]⇒double[] */
  public static double[] convertIntArrayToDblArray(int[] intArray) 
  /** double[]⇒int[] */
  public static int[] convertDblArrayToIntArray(double[] doubleArray) {

□ int[][] ⇔ double[][]

ArMath.java
  /** int[][]⇒double[][] */
  public static double[][] convertIntArray2dToDblArray2d(int[][] intArray2d) 
  /** double[][]⇒int[][] */
  public static int[][] convertDblArray2dToIntArray2d(double[][] doubleArray2d) 

□ double[][]から指定されたカラムを抽出する

ArMath.java
  /** double[][]から指定されたカラムを抽出する */
  public static double[] extract(double[][] array,int index) 

□ DoubleのList ⇒ Double[]

ArMath.java
  /** List<Double>をDouble[]に変換する */
  public static Double[] convertDoubleListToDblArray(List<Double> list) 

###数値配列の値の集約値(最小値、最大値、合計値、平均値、標準偏差)

  • 集約値を計算する、対象は以下
    • Colleciton-Integer
    • Collection-Double
    • 一次元配列-int
    • 一次元配列-double

□ 一次元配列、二次元配列の集約値

ArMath.java
  /** 一次元配列の集約(最大最小など) */
  public static double calc(double[] doubleArray,ArReduceTo kind)
  /** 二次元配列の集約(最大最小など) */
  public static double[] calc(double[][] doubleArray,ArReduceTo kind,ArTableRC rowCol) {

□ 最大値の計算

ArMath.java
  /** 最大値-コレクション-Integer.<br> */
  public static Integer max(Collection<Integer> values) 
  /** 最大値-コレクション-double.<br> */
  public static Double maxDouble(Collection<Double> values) 
  /** 最大値-配列-int.<br> */
  public static int max(int... values) 
  /** 最大値-配列-double.<br> */
  public static double maxDouble(double... values) 

□ 最小値の計算

ArMath.java
  /** 最小値-コレクション-Integer.<br> */
  public static Integer min(Collection<Integer> values) 
  /** 最小値-コレクション-Double.<br> */
  public static Double minDouble(Collection<Double> values) 
  /** 最小値-配列-int.<br> */
  public static int min(int... values) 
  /** 最小値-配列-double.<br> */
  public static double minDouble(double... values) 

□ 合計値の計算

ArMath.java
  /** 合計値-コレクション-Integer.<br> */
  public static Integer sum(Collection<Integer> values) 
  /** 合計値-コレクション-Double.<br> */
  public static Double sumDouble(Collection<Double> values) 
  /** 合計値-配列-int.<br> */
  public static Integer sum(int... values) 
  /** 合計値-配列-double.<br> */
  public static Double sumDouble(double... values) 

□ 平均値の計算

ArMath.java
  /** 平均値-コレクション-Integer.<br> */
  public static double avg(Collection<Integer> values) 
  /** 平均値-コレクション-Double.<br> */
  public static double avgDouble(Collection<Double> values) 
  /** 平均値-配列-int.<br> */
  public static double avg(int... values) 
  /** 平均値-配列-double.<br> */
  public static double avgDouble(double... values) 

□ 標準偏差の計算

ArMath.java
  /** 標準偏差-コレクション-Integer.<br> */
  public static double stdDevi(Collection<Integer> values) 
  /** 標準偏差-コレクション-Double.<br> */
  public static double stdDeviDouble(Collection<Double> values) 
  /** 標準偏差-配列-int.<br> */
  public static double stdDevi(int... values) 
  /** 標準偏差-配列-double.<br> */
  public static double stdDeviDouble(double... values) 

###数値配列から条件(大小など)による値の抽出

  • 条件は以下の通り
    • LessThan,LessEqual,GreaterEqual,GreaterThan
  • 対象は以下の通り
    • Colleciton-Integer
    • Collection-Double
    • 一次元配列-int
    • 一次元配列-double

□ 指定値(含まない)より小さいものを抽出する

ArMath.java
  /** LessThan-コレクション-Integer. */
  public static List<Integer> ltSelect(Integer boundary,Collection<Integer> values) 
  /** LessThan-コレクション-Double. */
  public static List<Double> ltSelectDouble(Double boundary,Collection<Double> values) 
  /** LessThan-配列-int. */
  public static List<Integer> lessThan(int boundary,int... values) 
  /** LessThan-配列-double. */
  public static List<Double> ltSelectDouble(double boundary,double... values) 

□ 指定値(含む)より小さいものを抽出する

ArMath.java
  /** LessEqual-コレクション-Integer. */
  public static List<Integer> leSelect(Integer boundary,Collection<Integer> values) 
  /** LessEqual-コレクション-Double. */
  public static List<Double> leSelectDouble(Double boundary,Collection<Double> values) 
  /** LessEqual-配列-int. */
  public static List<Integer> lessEqual(int boundary,int... values) 
  /** LessEqual-配列-double. */
  public static List<Double> leSelectDouble(double boundary,double... values) 

□ 指定値(含まない)より大きいものを抽出する

ArMath.java
  /** GreaterThan-コレクション-Integer. */
  public static List<Integer> gtSelect(Integer boundary,Collection<Integer> values) 
  /** GreaterThan-コレクション-Double. */
  public static List<Double> gtSelectDouble(Double boundary,Collection<Double> values) 
  /** GreaterThan-配列-int. */
  public static List<Integer> greaterThan(int boundary,int... values) 
  /** GreaterThan-配列-double. */
  public static List<Double> gtSelectDouble(double boundary,double... values) 

□ 指定値(含む)より大きいものを抽出する

ArMath.java
  /** GreaterEqual-コレクション-Integer. */
  public static List<Integer> geSelect(Integer boundary,Collection<Integer> values) 
  /** GreaterEqual-コレクション-Double. */
  public static List<Double> geSelectDouble(Double boundary,Collection<Double> values) 
  /** GreaterEqual-配列-int. */
  public static List<Integer> greaterEqual(int boundary,int... values) 
  /** GreaterEqual-配列-double. */
  public static List<Double> geSelectDouble(double boundary,double... values) 

###数値配列の逆順、ランダマイズ

  • 一次元配列の逆順
  • 一次元配列のランダマイズ
  • 二次元配列の行・列の逆順
  • 二次元配列の行・列のランダマイズ

□ 数値配列の逆順、ランダマイズ

ArMath.java
  /** 一次元配列の逆順 */
  public static double[] reverse(double[] doubleArray) 
  /** 一次元配列のランダマイズ */
  public static double[] randomize(double[] doubleArray) 
  /** 二次元配列の行・列の逆順,indexが-1の時はすべてのRowまたはColumn */
  public static double[][] reverse(double[][] doubleArray,int index,ArTableRC rowCol) 
  /** 二次元配列の行・列のランダマイズ,indexが-1の時はすべてのRowまたはColumn */
  public static double[][] randomize(double[][] doubleArray,int index,ArTableRC rowCol) 

###数値配列の指定数値との演算

  • 演算の種類は以下の通り
    • 加算、減算、乗算、除算、代入、逆減算、逆除算、交換
    • ArCreatorによる演算
  • 対象の配列は一次元double、二次元double

□ 数値配列の指定数値との演算-配列全体の演算

ArMath.java
  /** 一次元配列の変換 */
  public static double[] convert(double[] doubleArray,ArCalc kind,double value) 
  /** 一次元配列の変換 */
  public static double[] convert(double[] doubleArray,ArCreator<Double,Double> creator) throws Exception 
  /** 一次元配列の変換.creatorのInteger引数には配列のインデックスが指定される. */
  public static double[] convert(double[] doubleArray,ArCreator2d<Double,Integer,Double> creator) throws Exception 
  /** 二次元配列の変換 */
  public static double[][] convert(double[][] doubleArray,ArCalc kind,double value) 
  /** 二次元配列の変換 */
  public static double[][] convert(double[][] doubleArray,ArCreator<Double,Double> creator) throws Exception 
  /** 二次元配列の変換 */
  public static double[][] convert(double[][] doubleArray,ArCreator2d<Double,Integer,Double> creator) throws Exception 

###数値配列の推移値(移動平均など)の計算

  • 計算できる推移値は次の通り
    • 移動平均、変動率、変動幅、パーセント、累積値、期間集計(四半期⇒年間などに使用)
    • 変動率と変動幅については、初期からの推移と期間推移を指定できる
  • 対象の配列は一次元double、二次元double

□ 数値配列の推移値(移動平均など)の計算

ArMath.java
  /**
   *  ArConvertToを利用した数値の変換.ただしkindのうちヒストグラムは指定不可.
   *  paramは次の場合のみ意味がある.MOVING_AVG,CHANGE_RATE,CHANGE_WIDTH,PERIOD_SUM.
   *  またCHANGE_RATE,CHANGE_WIDTHでparamに0を指定した場合は初期値に対する変動となる.
   */
  public static double[] convert(double[] array,ArConvertTo kind,int param) throws Exception 
  /**
   *  ArConvertToを利用した数値の変換.ただしkindのうちヒストグラムは指定不可.
   *  paramは次の場合のみ意味がある.MOVING_AVG,CHANGE_RATE,CHANGE_WIDTH,PERIOD_SUM.
   *  またCHANGE_RATE,CHANGE_WIDTHでparamに0を指定した場合は初期値に対する変動となる.
   */
  public static double[] convert(double[][] array,ArConvertTo kind,int param,ArTableRC rowCol,int index) throws Exception 

###数値配列からヒストグラムの作成

  • 対象の配列は一次元double配列
  • 分割基準は次の二つの方法で指定できる
    • Doubleの配列
    • ArValidatorの配列

□ 数値配列からヒストグラムの作成

ArMath.java
  /**
   * ヒストグラムを作成する.doudaryのlength-1の値が戻される.
   * boundary[0],boundary[length-1]にはnullを指定できる.その場合は無限値と解釈される.
   */
  public static int[] histogram(double[] array,Double[] boundary) throws Exception 
  /** ヒストグラムを作成する */
  public static int[] histogram(double[] array,ArValidator<Double>[] validators) throws Exception 

###二つの数値配列間の計算

  • 演算の種類は以下の通り
    • 加算、減算、乗算、除算、代入、逆減算、逆除算、交換
    • ArCreatorまたはArCreatorによる演算
  • 対象の配列は一次元double同士、二次元doubleと一次元double

□ 二つの数値配列間の計算

ArMath.java
  /** 一次元配列同士の演算 */
  public static double[] calc(double[] doubleArray0,double[] doubleArray1,ArCalc kind) 
  /** 一次元配列同士の演算 */
  public static double[] calc(double[] doubleArray0,double[] doubleArray1,ArCreator2d<Double,Double,Double> creator) throws Exception 
  /** 二次元配列の行・列と一次元配列の加減乗除.元の二次元配列が書き換えられる. */
  public static void calc(double[][] doubleArray0,double[] doubleArray1,int index,ArCalc kind,ArTableRC rowCol) 
  /** 二次元配列の行・列と一次元配列の演算.元の二次元配列が書き換えられる.*/
  public static void calc(double[][] doubleArray0,double[] doubleArray1,int index,ArCreator2d<Double,Double,Double> creator,ArTableRC rowCol) throws Exception 

##二段Map関連処理(ArMapOnMap)(05)
###概要

  • 二段Mapの生成 from(二段Map(Clone),Collection,ListOnMap,ArMatrix)
  • 二段Mapの値の変換(MapやArCreatorで変換の値を指定する)
  • 二段Mapの値の型の変換(MapやArCreatorで変換の型・値を指定する)
  • 二段Mapのキーの変換(Mapで変換前後のキーを指定する、主キーと副キーの交換)
  • 二段Mapを他の形式に変換 to(ListOnMap,ArMatrix,List)
  • 二段Mapのカウント(各種条件指定でのデータ数のカウント)
  • 二段Mapの削除(キー条件指定、値条件指定、List指定,空要素,null値)
  • 二段Mapの値の抽出(キー条件指定、値条件指定)
  • 二段Mapのキーの抽出(キー条件指定、値条件指定)
  • 二段Mapの要素の抽出(キー条件指定、値条件指定)
  • 二段Mapの等値判定(キーのみで判定することも可能)
  • 二段Mapの包含判定(キーのみで判定することも可能)
  • 二段Mapの集合演算(AND,OR,XOR,EXCEPT)

###二段Mapの生成 from(二段Map(Clone),Collection,ListOnMap,ArMatrix)

  • Cloneする
  • ArMatrixから生成する
  • ListOnMapから生成する、副キーの生成は以下のようなことが可能
    • 値のフィールド、ArCreatorで生成
  • Collectionから生成する
    • 主キー、副キーの生成はArCreatorで行う

□ 二段MapをCloneする

ArMapOnMap.java
  /** Cloneする */
  public static <$PrimaryKey,$SecondaryKey,$Value> Map<$PrimaryKey,Map<$SecondaryKey,$Value>> clone(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap) throws InstantiationException, IllegalAccessException 

□ 二段MapをArMatrixから生成する

ArMapOnMap.java
  /** ArMatrixから生成する key0->key1 */
  public static <$Key0,$Key1,$Value> Map<$Key0,Map<$Key1,$Value>> constructFromArMatrixKey0Key1(ArMatrix<$Key0,$Key1,$Value> mat) 
  /** ArMatrixから生成する key1-key0 */
  public static <$Key0,$Key1,$Value> Map<$Key1,Map<$Key0,$Value>> constructFromArMatrixKey1Key0(ArMatrix<$Key0,$Key1,$Value> mat) throws InstantiationException, IllegalAccessException

□ 二段MapをListOnMapから生成する

ArMapOnMap.java
  /**
   *  ListOnMapから生成する.主Mapのクラスは元のListOnMapと同一クラス.
   *  副キー($Key1)は値($Value)のフィールドから生成する.
   *  生成された副キーが同一主キーに対して重複するときは後のデータが設定される.
   */
  public static <$Key0,$Key1,$Value> Map<$Key0,Map<$Key1,$Value>> constructFromListOnMap(Map<$Key0,List<$Value>> listOnMap,String key1Field) throws Exception 
  /**
   *  ListOnMapから生成する
   *  副キー($key1)は値($Value)からArCreatorで生成する.
   *  生成された副キーが同一主キーに対して重複するときは後のデータが設定される.
   */
  public static <$Key0,$Key1,$Value> Map<$Key0,Map<$Key1,$Value>> constructFromListOnMap(Map<$Key0,List<$Value>> listOnMap,ArCreator<$Value,$Key1> creator) throws Exception {

□ 二段MapをCollectionから生成する

ArMapOnMap.java
  /** Collectionから生成する $key0,$key1は指定フィールドから. */
  public static <$Key0,$Key1,$Value> Map<$Key0,Map<$Key1,$Value>> constructFromCollection(Collection<$Value> collection,String key0Field,String key1Field) throws Exception
  /** Collectionから生成する $key0,$key1はArCreatorで生成する. */
  public static <$Key0, $Key1, $Value> Map<$Key0,Map<$Key1,$Value>> constructFromCollection(Collection<$Value> collection,ArCreator<$Value,$Key0> creator0,ArCreator<$Value,$Key1> creator1) throws Exception  {

###二段Mapの値の変換(MapやArCreatorで変換の値を指定する)

  • 二段Mapの値を変換する
  • 変換値は次のように指定する
    • Map
    • ArCreator
  • 変換されなかった値は、元の値のまま

□ 二段Mapの値を変換する

ArMapOnMap.java
  /** 値をMapで指定された値に変更する.指定されない値は元のまま. */
  public static <$PrimaryKey,$SecondaryKey,$Value> void changeValue(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,Map<$Value,$Value> map)
  /** 値をMapでArCreatorで変更する. */
  public static <$PrimaryKey,$SecondaryKey,$Value> void changeValue(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,ArCreator<$Value,$Value> creator)

###二段Mapの値の型の変換

  • 二段Mapの値の型を変換して新しいMapO二段MapnMapを作成する
  • 変換は次のように指定する
    • Map
    • ArCreator
  • 変換されなかった値は捨てられる

□ 二段Mapの値の型を変換して新しいMapO二段MapnMapを作成する

ArMapOnMap.java
  /** 値の型をMapで指定された型に変換する.mapに値がないものは捨てられる. */
  public static <$PrimaryKey,$SecondaryKey,$Value,$NewValue> Map<$PrimaryKey,Map<$SecondaryKey,$NewValue>> changeValueType(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,Map<$Value,$NewValue> map) throws Exception 
  /** 値の型をArCreatorで指定された型に変換する.creatorで変換されない値は捨てられる  */
  public static <$PrimaryKey,$SecondaryKey,$Value,$NewValue> Map<$PrimaryKey,Map<$SecondaryKey,$NewValue>> changeValueType(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,ArCreator<$Value,$NewValue> creator) throws Exception 

###二段Mapのキーの変換

  • 主キーの値の変換を行う、変換はMapで指定する、対応するキーがないときは元のまま
  • 副キーの値の変換を行う、変換はMapで指定する、対応するキーがないときは元のまま
  • 主キーと副キーを交換した新しい二段Mapを作成する

□ キーの値の変換を行う。

ArMapOnMap.java
  /** 主キーの変換.keyMapに値がない主キーは元のまま. */
  public static <$PrimaryKey,$SecondaryKey,$Value> void changePrimaryKey(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,Map<$PrimaryKey,$PrimaryKey> keyMap) 
  /** 副キーの変換.keyMapに値がない副キーは元のまま. */
  public static <$PrimaryKey,$SecondaryKey,$Value> void changeSecondaryKey(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,Map<$SecondaryKey,$SecondaryKey> keyMap) 

□ 主キーと副キーを交換した新しい二段Mapを作成する

ArMapOnMap.java
  /** 主キーと副キーの交換 */
  public static <$PrimaryKey,$SecondaryKey,$Value> Map<$SecondaryKey,Map<$PrimaryKey,$Value>> exchangeKey(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap) throws InstantiationException, IllegalAccessException 

###二段Mapを他の形式に変換

  • ListOnMapへの変換.副キーは捨てられる.重複値があってもそのまま設定される.
  • Listへの変換.値だけを変換.主キー、副キーは捨てられる.重複値があってもそのまま設定される.
  • Listへの変換、Listのオブジェクトはキーと値を含んだArTriple.
  • Listへの変換、Listのオブジェクトはキーと値からArCreator3dで生成されるオブジェクト.
  • ArMatrixへの変換

□ ListOnMapへの変換

ArMapOnMap.java
  /** ListOnMapへの変換.副キーは捨てられる.重複値があってもそのまま設定される. */
  public static <$PrimaryKey,$SecondaryKey,$Value> Map<$PrimaryKey,List<$Value>> convertToListOnMap(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap) throws InstantiationException, IllegalAccessException 

□ Listへの変換

ArMapOnMap.java
  /** Listへの変換.値だけを変換.主キー、副キーは捨てられる.重複値があってもそのまま設定される. */
  public static <$PrimaryKey,$SecondaryKey,$Value> List<$Value> convertToList(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap) 
  /** Listへの変換.キーと値を含んだArTriple. */
  public static <$PrimaryKey,$SecondaryKey,$Value> List<ArTriple<$PrimaryKey,$SecondaryKey,$Value>> convertToArTripleList(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap) 
  /** Listへの変換.キーと値からArCreator3dで生成されるオブジェクト. */
  public static <$PrimaryKey,$SecondaryKey,$Value, $NewValue> List<$NewValue> convertToArCreator3dList(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,ArCreator3d<$PrimaryKey,$SecondaryKey,$Value,$NewValue> creator) throws Exception 

□ ArMatrixへの変換

ArMapOnMap.java
  /** ArMatrixへの変換.ArMatrix<$SecondaryKey,$PrimaryKey,$Value>を作成したいときはexchangeKeyをすること. */
  public static <$PrimaryKey,$SecondaryKey,$Value> ArMatrix<$PrimaryKey,$SecondaryKey,$Value> convertToArMatrix(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap) throws InstantiationException, IllegalAccessException 

###二段Mapのカウント(各種条件指定でのデータ数のカウント)

  • 主キー配下の副キーの数の合計、主キーはArValidatorで指定する
  • 全データ数.重複値もカウントする
  • 指定主キー配下のデータ数の合計、主キーはArValidatorで指定する
  • 指定主キー、副キー配下のデータ数の合計、主キーと副キーはArValidatorで指定する
  • 指定副キー配下のデータ数の合計、副キーはArValidatorで指定する
  • 指定データの数、データは直接指定またはArValidatorで指定する

□ 二段Mapのカウント

ArMapOnMap.java
  /** 主キーの数.簡単に取得できるけど定義しておく.*/
  public static <$PrimaryKey,$Secondarykey,$Value> int size(Map<$PrimaryKey,Map<$Secondarykey,$Value>> mapOnMap)
  /** 主キー配下の副キーの数.簡単に取得できるけど定義しておく.*/
  public static <$PrimaryKey,$SecondaryKey,$Value> int size(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,$PrimaryKey key) 
  /** 主キー配下の副キーの数の合計.*/
  public static <$PrimaryKey,$Secondarykey,$Value> int size(Map<$PrimaryKey,Map<$Secondarykey,$Value>> mapOnMap,ArValidator<$PrimaryKey> validator) 
  /** 全データ数.重複値もカウントする. */
  public static <$PrimaryKey,$SecondaryKey,$Value> int countAll(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap) 
  /** 指定主キー配下のデータ数.get(key).size()と同一.簡単に取得できるけど定義しておく.*/
  public static <$PrimaryKey,$SecondaryKey,$Value> int countByPrimaryKey(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,$PrimaryKey key) 
  /** 指定主キー配下のデータ数の合計 */
  public static <$PrimaryKey,$SecondaryKey,$Value> int countByPrimaryKey(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,ArValidator<$PrimaryKey> validator) 
  /** 指定キー主キー、副キー配下のデータ数の合計 */
  public static <$PrimaryKey,$SecondaryKey,$Value> int countByKey(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,ArValidator<$PrimaryKey> primaryValidator,ArValidator<$SecondaryKey> secondaryValidator) 
  /** 指定副キー配下のデータ数の合計 */
  public static <$PrimaryKey,$SecondaryKey,$Value> int countSecondarykey(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,ArValidator<$SecondaryKey> secondaryValidator) 
  /** 指定データの数 */
  public static <$PrimaryKey,$SecondaryKey,$Value> int countValue(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,$Value value) 
  /** 指定データの数 */
  public static <$PrimaryKey,$SecondaryKey,$Value> int countValue(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,ArValidator<$Value> valueValidator) 

###二段Mapの削除(キー条件指定、値条件指定、List指定,空要素,null値)

  • 主キーを指定して削除する、主キーはArValidatorで指定する
  • 主キーと副キーを指定して削除する、主キーと副キーはArValidatorで指定する
  • 副キーを指定して削除する、副キーはArValidatorで指定する
  • 値を指定して削除する、値は直接指定またはArValidatorで指定する
  • 主キーと副キーのArTupleのListで指定された要素を削除する
  • 空要素(サイズゼロornull値の主キー、null値の副キー)を削除する.

□ 二段Mapの削除

ArMapOnMap.java
  /** 主キーを指定して削除する */
  public static <$PrimaryKey,$SecondaryKey,$Value> void removeByPrimaryKey(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,ArValidator<$PrimaryKey> pValidator) throws InstantiationException, IllegalAccessException 
  /** 主キーと副キーを指定して削除する */
  public static <$PrimaryKey,$SecondaryKey,$Value> void removeByKey(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,ArValidator<$PrimaryKey> pValidator,ArValidator<$SecondaryKey> sValidator) 
  /** 副キーを指定して削除する */
  public static <$PrimaryKey,$SecondaryKey,$Value> void removeBySecondaryKey(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,ArValidator<$SecondaryKey> sValidator)
  /** 値を指定して削除する */
  public static <$PrimaryKey,$SecondaryKey,$Value> void removeByValue(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,$Value value)
  /** 値を指定して削除する */
  public static <$PrimaryKey,$SecondaryKey,$Value> void removeByValue(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,ArValidator<$Value> validator)
  /** listで指定された要素を削除する */
  public static <$PrimaryKey,$SecondaryKey,$Value> void removeByArTupleList(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,List<ArTuple<$PrimaryKey,$SecondaryKey>> list)
  /** 空要素(サイズゼロornull値の主キー、null値の副キー)を削除する. */
  public static <$PrimaryKey, $SecondaryKey, $Value> void removeEmptyAndNull(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap) throws InstantiationException, IllegalAccessException

###二段Mapの値の抽出(キー条件指定、値条件指定)

  • 指定した主キーの値を抽出する、主キーはArValidatorで指定する
  • 指定した主キー以外の値を抽出する、主キーはArValidatorで指定する
  • 指定した副キーの値を抽出する、副キーは値を直接指定またはArValidatorで指定する
  • 指定した副キー以外の値を抽出する、副キーは値を直接指定またはArValidatorで指定する
  • 指定した値の値を抽出する、値はArValidatorで指定する
  • 指定した値以外の値を抽出する、値はArValidatorで指定する

□ 指定した主キー(以外)の値を抽出する、主キーはArValidatorで指定する

ArMapOnMap.java
  /** 指定した主キーの値を抽出する.重複値も抽出される. */
  public static <$PrimaryKey,$SecondaryKey,$Value> List<$Value> selectValueByPrimaryKey(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,ArValidator<$PrimaryKey> validator)
  /** 指定した主キー以外の値を抽出する.重複値も抽出される. */
  public static <$PrimaryKey,$SecondaryKey,$Value> List<$Value> selectValueByPrimaryKeyExcept(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,ArValidator<$PrimaryKey> validator)

□ 指定した副キー(以外)の値を抽出する、副キーは値を直接指定またはArValidatorで指定する

ArMapOnMap.java
  /** 指定した副キーの値を抽出する.重複値も抽出される. */
  public static <$PrimaryKey,$SecondaryKey,$Value> List<$Value> selectValueBySecondaryKey(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,$SecondaryKey sKey) 
  /** 指定した副キーの値を抽出する.重複値も抽出される. */
  public static <$PrimaryKey,$SecondaryKey,$Value> List<$Value> selectValueBySecondaryKey(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,ArValidator<$SecondaryKey> validator)
  /** 指定した副キー以外の値を抽出する.重複値も抽出される. */
  public static <$PrimaryKey,$SecondaryKey,$Value> List<$Value> selectValueBySecondaryKeyExcept(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,$SecondaryKey key) 
  /** 指定した副キー以外の値を抽出する.重複値も抽出される. */
  public static <$PrimaryKey,$SecondaryKey,$Value> List<$Value> selectValueBySecondaryKeyExcept(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,ArValidator<$SecondaryKey> validator) 

□ 指定した値(以外)の値を抽出する、値はArValidatorで指定する

ArMapOnMap.java
  /** 指定した値を抽出する.重複値も抽出される. */
  public static <$PrimaryKey,$SecondaryKey,$Value> List<$Value> selectValueByValue(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,ArValidator<$Value> validator)
  /** 指定した値以外を抽出する.重複値も抽出される. */
  public static <$PrimaryKey,$SecondaryKey,$Value> List<$Value> selectValueByValueExcept(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,ArValidator<$Value> validator) 

###二段Mapのキーの抽出(キー条件指定、値条件指定)

  • 主キーを抽出する、主キーはArValidatorで指定する
  • 主キーと副キーを抽出する、主キーと副キーは直接値で指定する
  • 主キーと副キーを抽出する、主キーと副キーはArValidatorで指定する
  • 副キーを抽出する、副キーは値を直接指定またはArValidatorで指定する
  • 副キーを抽出する、副キー⇒値のMapで指定する
  • 値で主キーと副キーを抽出する、値は直接指定かArValidatorで指定する

□ 主キーを抽出する

ArMapOnMap.java
  /** 主キーを抽出する */
  public static <$PrimaryKey,$SecondaryKey,$Value> Set<$PrimaryKey> selectPrimaryKey(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,ArValidator<$PrimaryKey> pValidator) throws InstantiationException, IllegalAccessException 

□ 主キーと副キーを抽出する

ArMapOnMap.java
  /** 主キーと副キーを抽出する */
  public static <$PrimaryKey,$SecondaryKey,$Value> List<ArTuple<$PrimaryKey,$SecondaryKey>> selectKey(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,$PrimaryKey pKey,$SecondaryKey sKey) 
  /** 主キーと副キーを抽出する */
  public static <$PrimaryKey,$SecondaryKey,$Value> List<ArTuple<$PrimaryKey,$SecondaryKey>> selectKey(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,ArValidator<$PrimaryKey> pValidator,ArValidator<$SecondaryKey> sValidator) 

□ 副キーを抽出する

ArMapOnMap.java
  /** 副キーを抽出する */
  public static <$PrimaryKey,$SecondaryKey,$Value> List<ArTuple<$PrimaryKey,$SecondaryKey>> selectSecondaryKey(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,$SecondaryKey sKey) 
  /** 副キーを抽出する */
  public static <$PrimaryKey,$SecondaryKey,$Value> List<ArTuple<$PrimaryKey,$SecondaryKey>> selectSecondaryKey(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,ArValidator<$SecondaryKey> sValidator) 
  /** 副キーを抽出する */
  public static <$PrimaryKey,$SecondaryKey,$Value> Set<$SecondaryKey> secondaryKeySet(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap) 

□ 値で主キーと副キーを抽出する

ArMapOnMap.java
  /** 値でキーを抽出する */
  public static <$PrimaryKey,$SecondaryKey,$Value> List<ArTuple<$PrimaryKey,$SecondaryKey>> selectKeyByValue(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,$Value value) 
  /** 値でキーを抽出する */
  public static <$PrimaryKey,$SecondaryKey,$Value> List<ArTuple<$PrimaryKey,$SecondaryKey>> selectKeyByValue(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,ArValidator<$Value> validator) 

###二段Mapの要素の抽出(キー条件指定、値条件指定)

  • 指定した主キーの要素を抽出する、主キーはArValidatorで指定する
  • 指定した主キー以外の要素を抽出する、主キーはArValidatorで指定する
  • 指定した副キーの要素を抽出する、副キーは値の直接指定またはArValidatorで指定する
  • 指定した副キー以外の要素を抽出する、副キーは値の直接指定またはArValidatorで指定する
  • 指定した値を持つ要素を抽出する、値は値の直接指定またはArValidatorで指定する
  • 指定した値以外の値を持つ要素を抽出する、値は値の直接指定またはArValidatorで指定する

□ 指定した主キー(以外)の要素を抽出する、主キーはArValidatorで指定する

ArMapOnMap.java
  /** 指定した主キーの要素を抽出する */
  public static <$PrimaryKey,$SecondaryKey,$Value> Map<$PrimaryKey,Map<$SecondaryKey,$Value>> selectByPrimaryKey(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,ArValidator<$PrimaryKey> validator) 
  /** 指定した主キー以外の要素を抽出する */
  public static <$PrimaryKey,$SecondaryKey,$Value> Map<$PrimaryKey,Map<$SecondaryKey,$Value>> selectByPrimaryKeyExcept(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,ArValidator<$PrimaryKey> validator) throws InstantiationException, IllegalAccessException

□ 指定した副キー(以外)の要素を抽出する、副キーは値の直接指定またはArValidatorで指定する

ArMapOnMap.java
  /** 指定した副キーの要素を抽出する */
  public static <$PrimaryKey,$SecondaryKey,$Value> Map<$PrimaryKey,Map<$SecondaryKey,$Value>> selectBySecondaryKey(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,$SecondaryKey secondaryKey)
  /** 指定した副キーの要素を抽出する */
  public static <$PrimaryKey,$SecondaryKey,$Value> Map<$PrimaryKey,Map<$SecondaryKey,$Value>> selectBySecondaryKey(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,ArValidator<$SecondaryKey> validator) 
  /** 指定した副キー以外の要素を抽出する */
  public static <$PrimaryKey,$SecondaryKey,$Value> Map<$PrimaryKey,Map<$SecondaryKey,$Value>> selectBySecondaryKeyExcept(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,$SecondaryKey key) 
  /** 指定した副キー以外の要素を抽出する */
  public static <$PrimaryKey,$SecondaryKey,$Value> Map<$PrimaryKey,Map<$SecondaryKey,$Value>> selectBySecondaryKeyExcept(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,ArValidator<$SecondaryKey> validator) 

□ 指定した値(以外)の値を持つ要素を抽出する、値は値の直接指定またはArValidatorで指定する

ArMapOnMap.java
  /** 指定した値を持つ要素を抽出する */
  public static <$PrimaryKey, $SecondaryKey, $Value> Map<$PrimaryKey,Map<$SecondaryKey,$Value>> selectByValue(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,$Value value) throws InstantiationException, IllegalAccessException 
  /** 指定した値の持つ要素をで抽出する */
  public static <$PrimaryKey,$SecondaryKey,$Value> Map<$PrimaryKey,Map<$SecondaryKey,$Value>> selectByValue(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,ArValidator<$Value> validator) throws InstantiationException, IllegalAccessException
  /** 指定した値以外を持つ要素を抽出する */
  public static <$PrimaryKey, $SecondaryKey, $Value> Map<$PrimaryKey,Map<$SecondaryKey,$Value>> selectByValueExcept(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,$Value value) 
  /** 指定した値以外の持つ要素をで抽出する */
  public static <$PrimaryKey,$SecondaryKey,$Value> Map<$PrimaryKey,Map<$SecondaryKey,$Value>> selectByValueExcept(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap,ArValidator<$Value> validator) 

###二段Mapの等値判定(キーのみで判定することも可能)

  • 二つの二段Mapが等しいかを判定する
  • 二つの二段Mapが値を無視して等しいかを判定する

□ 二段Mapの等値判定

ArMapOnMap.java
  /** 二つのMapOnMapが等しいかを判定する */
  public static <$PrimaryKey,$SecondaryKey,$Value> boolean equals(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap0,Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap1) 
  /** 二つのMapOnMapが値を無視して等しいかを判定する */
  public static <$PrimaryKey,$SecondaryKey,$Value> boolean keyEquals(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap0,Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap1) 

###二段Mapの包含判定(キーのみで判定することも可能)

  • 指定された二段Mapのキーと値を含んでいるかを判定する
  • 指定された二段Mapのキーを含んでいるかを判定する

□ 二段Mapの包含判定

ArMapOnMap.java
  /** 指定されたMapOnMapのキーと値を含んでいるかを判定する */
  public static <$PrimaryKey,$SecondaryKey,$Value> boolean contains(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap0,Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap1) 
  /** 指定されたMapOnMapのキーを含んでいるかを判定する */
  public static <$PrimaryKey,$SecondaryKey,$Value> boolean containsKey(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap0,Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap1) 

###二段Mapの集合演算(AND,OR,XOR,EXCEPT)

  • 二つの二段MapのAND,キーのみでANDを行う.重複値はmapOnMap0の値
  • 二つの二段MapのAND,キーと値でANDを行う.
  • 二つの二段MapのOR,重複値はmapOnMap0の値
  • 二つの二段MapのEXCEPT,主キーでEXCEPTを行う
  • 二つの二段MapのEXCEPT,主キーと副キーでEXCEPTを行う
  • 二つの二段MapのEXCEPT,キーと値でEXCEPTを行う.
  • 二つの二段MapのXOR

□ 二段Mapの集合演算

ArMapOnMap.java
  /** 二つのMapOnMapのAND,キーのみでANDを行う.重複値はmapOnMap0の値 */
  public static <$PrimaryKey,$SecondaryKey,$Value> Map<$PrimaryKey,Map<$SecondaryKey,$Value>> andKey(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap0,Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap1) throws InstantiationException, IllegalAccessException 
  /** 二つのMapOnMapのAND,キーと値でANDを行う. */
  public static <$PrimaryKey,$SecondaryKey,$Value> Map<$PrimaryKey,Map<$SecondaryKey,$Value>> andValue(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap0,Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap1) throws InstantiationException, IllegalAccessException 

  /** 二つのMapOnMapのOR,重複値はmapOnMap0の値  */
  public static <$PrimaryKey,$SecondaryKey,$Value> Map<$PrimaryKey,Map<$SecondaryKey,$Value>> or(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap0,Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap1) throws InstantiationException, IllegalAccessException 
  /** 二つのMapOnMapのEXCEPT,主キーでEXCEPTを行う. */
  public static <$PrimaryKey,$SecondaryKey,$Value> Map<$PrimaryKey,Map<$SecondaryKey,$Value>> exceptPrimaryKey(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap0,Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap1) throws InstantiationException, IllegalAccessException 
  /** 二つのMapOnMapのEXCEPT,主キーと副キーでEXCEPTを行う. */
  public static <$PrimaryKey,$SecondaryKey,$Value> Map<$PrimaryKey,Map<$SecondaryKey,$Value>> exceptKey(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap0,Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap1) throws InstantiationException, IllegalAccessException 
  /** 二つのMapOnMapのEXCEPT,キーと値でEXCEPTを行う.  */
  public static <$PrimaryKey,$SecondaryKey,$Value> Map<$PrimaryKey,Map<$SecondaryKey,$Value>> exceptValue(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap0,Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap1) throws InstantiationException, IllegalAccessException 
  /** 二つのMapOnMapのXOR,値 */
  public static <$PrimaryKey,$SecondaryKey,$Value> Map<$PrimaryKey,Map<$SecondaryKey,$Value>> xor(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap0,Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap1) throws InstantiationException, IllegalAccessException 

##ListOnMap(Mapの上にList)関連処理(ArListOnMap)(06)

###概要

  • ListOnMapの生成 from(ListOnMap,MapOnMap,Collection)
  • ListOnMapの値の設定 null値や重複地の無視、Mapのキー・値の追加
  • ListOnMapの値の削除 Listが空のキー、重複値・null値、Collection・Mapでの指定、値の条件指定
  • ListOnMapの値のカウント 全データ、値の条件指定、キーごとの集計
  • ListOnMapからの値の抽出 値の条件指定
  • ListOnMapからのキーの抽出 値の条件指定、Listの条件指定
  • ListOnMapからの要素の抽出 値の条件指定、Listの条件指定
  • ListOnMapの値の変換 MapやArCreatorで指定された値に変換
  • ListOnMapの値の型の変換 MapやArCreatorで指定された型に変換
  • ListOnMapの他の形式への変換
  • 二つのListOnMapの集合演算(AND,OR,XOR,EXCEPT)
  • 二つのListOnMapの等値判定、Listに判定に順番無視、重複無視、null値無視が可能

###ListOnMapの生成 from(ListOnMap,MapOnMap,Collection)

  • ListOnMapをクローンする.shallowコピー
  • MapOnMapからListOnMapを作成する.副キーは失われる
  • CollectionからListOnMapを作成する
    • .キーは指定されたフィールドまたはArCreatorで作成する

□ ListOnMapをクローンする.shallowコピー

ArListOnMap.java
  /** ListOnMapをクローンする.shallowコピー.constructFromListOnMapと同一 */
  public static <$Key,$Value> Map<$Key,List<$Value>> clone(Map<$Key,List<$Value>> listOnMap) throws InstantiationException, IllegalAccessException 

□ MapOnMapからListOnMapを作成する.副キーは失われる

ArListOnMap.java
  /** MapOnMapからListOnMapを作成する.副キーは失われる. */
  public static <$PrimaryKey,$SecondaryKey,$Value> Map<$PrimaryKey,List<$Value>> constructFromMapOnMap(Map<$PrimaryKey,Map<$SecondaryKey,$Value>> mapOnMap) throws InstantiationException, IllegalAccessException 

□ CollectionからListOnMapを作成する

ArListOnMap.java
  /** CollectionからListOnMapを作成する.キーは指定されたフィールドとなる.clazzがnullの場合はHashMapとなる.重複値やnull値も追加される. */
  public static <$Key,$Value> Map<$Key,List<$Value>> constructFromCollection(Collection<$Value> collection,String keyField,Class<Map> clazz) throws InstantiationException, IllegalAccessException, NoSuchFieldException, SecurityException, IllegalArgumentException, InvocationTargetException 
  /** CollectionからListOnMapを作成する.キーはArCreatorで作成される.clazzがnullの場合はHashMapとなる.重複値やnull値も追加される. */
  public static <$Key, $Value> Map<$Key,List<$Value>> constructFromCollection(Collection<$Value> collection,ArCreator<$Value,$Key> creator,Class<Map> clazz) throws Exception 

###ListOnMapの値の設定

  • 値を追加する.重複値やnull値を無視することもできる.
  • Mapで指定されたキーと値を追加する.重複値やnull値を無視することもできる.

□ 値を追加する.重複値やnull値を無視することもできる.

ArListOnMap.java
  /** 値を追加する.重複値やnull値を無視することもできる.*/
  public static <$Key, $Value> void addValue(Map<$Key,List<$Value>> listOnMap,$Key key,$Value value,ArDuplicateAllowed dupAllowed,ArNullAllowed nullAllowed) 

□ Mapで指定されたキーと値を追加する.重複値やnull値を無視することもできる.

ArListOnMap.java
  /** Mapで指定されたキーと値を追加する.重複値やnull値を無視することもできる. */
  public static <$Key, $Value> void addValuesOfMap(Map<$Key,List<$Value>> listOnMap,Map<$Key,$Value> map,ArDuplicateAllowed dupAllowed,ArNullAllowed nullAllowed) 

###ListOnMapの値の削除

  • Listが空、nullのキーを削除する
  • Listの重複値を削除する
  • Listのnull値を削除する
  • 指定された値を削除する
    • 値は直接指定またはArValidatorで指定する
  • Collecctionで指定された値を削除する
  • Mapで指定されたキー・値を削除する

□ Listが空、nullのキーを削除する

ArListOnMap.java
  /** Listが空、nullのキーを削除する */
  public static <$Key, $Value> void removeEmptyAndNullKey(Map<$Key,List<$Value>> listOnMap) 

□ Listの重複値を削除する

ArListOnMap.java
  /** Listの重複値を削除する */
  public static <$Key,$Value> void removeDuplidatedValue(Map<$Key,List<$Value>> listOnMap) 

□ Listのnull値を削除する

ArListOnMap.java
  /** Listのnull値を削除する */
  public static <$Key,$Value> void removeNullValue(Map<$Key,List<$Value>> listOnMap) 

□ 指定された値を削除する

ArListOnMap.java
  /** 指定された値を削除する */
  public static <$Key,$Value> void removeValue(Map<$Key,List<$Value>> listOnMap,$Value value) 
  /** ArValidatorで指定された値を削除する */
  public static <$Key,$Value> void removeValue(Map<$Key,List<$Value>> listOnMap,ArValidator<$Value> validator)

□ Collecctionで指定された値を削除する

ArListOnMap.java
  /** Collecctionで指定された値を削除する */
  public static <$Key,$Value> void removeValue(Map<$Key,List<$Value>> listOnMap,Collection<$Value> values)

□ Mapで指定されたキー・値を削除する

ArListOnMap.java
  /** Mapで指定されたキー・値を削除する */
  public static <$Key,$Value> void removeValue(Map<$Key,List<$Value>> listOnMap,Map<$Key,$Value> map) 

###ListOnMapの値のカウント

  • 全データ数をカウントする.nullや重複値もカウントされる
  • ArValidatorで指定されたキーのデータ数をカウントする
  • 指定された値のデータ数をカウントする
    • 値は直接指定またはArValidatorで指定する
  • 各キーのデータ数をカウントする
  • 各キーの指定された値のデータ数をカウントする
    • 値は直接指定またはArValidatorで指定する

□ ArValidatorで指定されたキーのデータ数をカウントする

ArListOnMap.java
  /** ArValidatorで指定されたキーのデータ数をカウントする */
  public static <$Key, $Value> int countByKey(Map<$Key,List<$Value>> listOnMap,ArValidator<$Key> validator) 

□ 指定された値のデータ数をカウントする

ArListOnMap.java
  /** 指定された値のデータ数をカウントする */
  public static <$Key, $Value> int countByValue(Map<$Key,List<$Value>> listOnMap,$Value value) 
  /** ArValidatorで指定された値のデータ数をカウントする */
  public static <$Key, $Value> int countByValue(Map<$Key,List<$Value>> listOnMap,ArValidator<$Value> validator) 

□ 各キーのデータ数をカウントする

ArListOnMap.java
  /** 各キーのデータ数をカウントする */
  public static <$Key, $Value> Map<$Key,Integer> countMap(Map<$Key,List<$Value>> listOnMap) throws InstantiationException, IllegalAccessException 

□ 各キーの指定された値のデータ数をカウントする

ArListOnMap.java
  /** 各キーの指定された値のデータ数をカウントする */
  public static <$Key, $Value> Map<$Key,Integer> countMap(Map<$Key,List<$Value>> listOnMap,$Value value) throws InstantiationException, IllegalAccessException 
  /** 各キーのArValidtorで指定された値のデータ数をカウントする  */
  public static <$Key, $Value> Map<$Key,Integer> countMap(Map<$Key,List<$Value>> listOnMap,ArValidator<$Value> validator) throws InstantiationException, IllegalAccessException 

###ListOnMapからの値の抽出

  • ArValidatorで指定された値の抽出.重複値も抽出される.
  • 指定された値以外の値の抽出
  • ArValidatorで指定された値以外の値の抽出

□ ListOnMapからの値の抽出

ArListOnMap.java
  /** ArValidatorで指定された値の抽出.重複値も抽出される. */
  public static <$Key,$Value> List<$Value> selectValue(Map<$Key,List<$Value>> listOnMap,ArValidator<$Value> validator) 
  /** 指定された値以外の値の抽出 */
  public static <$Key,$Value> List<$Value> selectValueExcept(Map<$Key,List<$Value>> listOnMap,$Value value) 
  /** ArValidatorで指定された値以外の値の抽出 */
  public static <$Key,$Value> List<$Value> selectValueExcept(Map<$Key,List<$Value>> listOnMap,ArValidator<$Value> validator) 

###ListOnMapからのキーの抽出

  • 指定された値を持つキーの抽出
  • ArValidatorで指定された値を持つキーの抽出
  • 指定された値以外の値を持つキーの抽出
  • ArValidatorで指定された値以外の値を持つキーの抽出

□ 指定された値(以外の値)を持つキーの抽出

ArListOnMap.java
  /** 指定された値を持つキーの抽出 */
  public static <$Key, $Value> Set<$Key> selectKey(Map<$Key,List<$Value>> listOnMap,$Value value) 
  /** 指定された値以外の値を持つキーの抽出 */
  public static <$Key, $Value> Set<$Key> selectKeyExcept(Map<$Key,List<$Value>> listOnMap,$Value value) 

□ ArValidatorで指定された値(以外の値)を持つキーの抽出

ArListOnMap.java
  /** ArValidatorで指定された値を持つキーの抽出 */
  public static <$Key, $Value> Set<$Key> selectKey(Map<$Key,List<$Value>> listOnMap,ArValidator<$Value> validator)
  /** ArValidatorで指定された値以外の値を持つキーの抽出 */
  public static <$Key,$Value> Set<$Key> selectKeyExcept(Map<$Key,List<$Value>> listOnMap,ArValidator<$Value> validator)

###ListOnMapからの要素の抽出

  • 指定された値を持つ要素の抽出
  • ArValidatorで指定された値を持つ要素の抽出
  • 指定された値以外の値を持つ要素の抽出
  • ArValidatorで指定された値以外の値を持つ要素の抽出
  • ArValidatorを満足するListを持つ要素を抽出する
  • ArValidatorを満足しないListを持つ要素を抽出する

□ 指定された値(以外の値)を持つ要素の抽出

ArListOnMap.java
  /** 指定された値を持つ要素の抽出 */
  public static <$Key,$Value> Map<$Key,List<$Value>> selectByValue(Map<$Key,List<$Value>> listOnMap,$Value value) throws InstantiationException, IllegalAccessException
  /** 指定された値以外の値を持つ要素の抽出 */
  public static <$Key,$Value> Map<$Key,List<$Value>> selectByValueExcept(Map<$Key,List<$Value>> listOnMap,$Value value) throws InstantiationException, IllegalAccessException

□ ArValidatorで指定された値(以外の値)を持つ要素の抽出

ArListOnMap.java
  /** ArValidatorで指定された値を持つ要素の抽出 */
  public static <$Key,$Value> Map<$Key,List<$Value>> selectByValue(Map<$Key,List<$Value>> listOnMap,ArValidator<$Value> validator) throws InstantiationException, IllegalAccessException
  /** ArValidatorで指定された値以外の値を持つ要素の抽出 */
  public static <$Key,$Value> Map<$Key,List<$Value>> selectByValueExcept(Map<$Key,List<$Value>> listOnMap,ArValidator<$Value> validator) throws InstantiationException, IllegalAccessException

□ ArValidatorを満足する(満足しない)Listを持つ要素を抽出する

ArListOnMap.java
  /** ArValidatorを満足するListを持つ要素を抽出する */
  public static <$Key,$Value> Map<$Key,List<$Value>> selectByList(Map<$Key,List<$Value>> listOnMap,ArValidator<List<$Value>> validator) throws InstantiationException, IllegalAccessException
  /** ArValidatorを満足しないListを持つ要素を抽出する */
  public static <$Key,$Value> Map<$Key,List<$Value>> selectByListExcept(Map<$Key,List<$Value>> listOnMap,ArValidator<List<$Value>> validator) throws InstantiationException, IllegalAccessException

###ListOnMapの値の変換 MapやArCreatorで指定された値に変換

  • 値をMapのキーからMapの値に変換する、Mapに該当しない値はもとのまま
  • 値をArCreatorで変換する、ArCreatorでnullが戻された値はもとのまま

□ ListOnMapの値の変換 MapやArCreatorで指定された値に変換

ArListOnMap.java
  /** 値をMapのキーからMapの値に変換する.Listに重複値があればすべて変換する.Mapに該当しない値はもとのまま */
  public static <$Key,$Value> void convertValue(Map<$Key,List<$Value>> listOnMap,Map<$Value,$Value> map) throws Exception 
  /** 値をArCreatorで変換する.Listに重複値があればすべて変換する.ArCreatorでnullが戻された値はもとのまま */
  public static <$Key,$Value> void convertValue(Map<$Key,List<$Value>> listOnMap,ArCreator<$Value,$Value> creator) throws Exception

###ListOnMapの値の型の変換 MapやArCreatorで指定された型に変換

  • 値をMapのキーからMapの値に変換する.Mapに該当しない値は捨てられる
  • 値をArCreatorで変換する.ArCreatorでnullが戻された値は捨てられる

□ ListOnMapの値の型の変換 MapやArCreatorで指定された型に変換

ArListOnMap.java
  /** 値をMapのキーからMapの値に変換する.Mapに該当しない値は捨てられる */
  public static <$Key, $Value, $NewValue> Map<$Key,List<$NewValue>> convertValueType(Map<$Key,List<$Value>> listOnMap,Map<$Value,$NewValue> map) throws Exception 
  /** 値をArCreatorで変換する.ArCreatorでnullが戻された値は捨てられる */
  public static <$Key, $Value, $NewValue> Map<$Key,List<$NewValue>> convertValueType(Map<$Key,List<$Value>> listOnMap,ArCreator<$Value,$NewValue> creator) throws Exception 

###ListOnMapの他の形式への変換

  • 二段Mapに変換する.副キーは指定フィールド
  • 二段Mapに変換する.副キーは$ValueをArCreatorで変換したもの
  • Listに変換する.キーは捨てられる
  • キーと値をArCreator2dで変換して、Listを作成する
  • キーと値のArTupleのListを作成する
  • ListをArCreatorで変換する

□ 二段Mapに変換する.副キーは指定フィールド

ArListOnMap.java
  /** 二段Mapに変換する.副キーは指定フィールド  */
  public static <$PrimaryKey,$SecondaryKey,$Value> Map<$PrimaryKey,Map<$SecondaryKey,$Value>> convertToMapOnMap(Map<$PrimaryKey,List<$Value>> listOnMap,String sKey,Class secondaryMapClass) throws Exception 

□ 二段Mapに変換する.副キーは$ValueをArCreatorで変換したもの

ArListOnMap.java
  /** 二段Mapに変換する.副キーは$ValueをArCreatorで変換したもの */
  public static <$PrimaryKey,$SecondaryKey,$Value> Map<$PrimaryKey,Map<$SecondaryKey,$Value>> convertToMapOnMap(Map<$PrimaryKey,List<$Value>> listOnMap,ArCreator<$Value,$SecondaryKey> creator,Class secondaryMapClass) throws Exception 

□ Listに変換する.キーは捨てられる

ArListOnMap.java
  /** List<$Value>に変換する.キーは捨てられる */
  public static <$Key,$Value> List<$Value> convertToList(Map<$Key,List<$Value>> listOnMap) 

□ キーと値をArCreator2dで変換して、Listを作成する

ArListOnMap.java
  /** キー($Key)と値($Value)をArCreator2dで$NewValueに変換して、List<$NewValue>を作成する.  */
  public static <$Key,$Value,$NewValue> List<$NewValue> convertToListByArCreator2d(Map<$Key,List<$Value>> listOnMap,ArCreator2d<$Key,$Value,$NewValue> creator) throws Exception

□ キーと値のArTupleのListを作成する

ArListOnMap.java
  /** List<ArTuple<$Key,$Value>>に変換する */
  public static <$Key, $Value> List<ArTuple<$Key,$Value>> convertToListOfArTuple(Map<$Key,List<$Value>> listOnMap) 

□ ListをArCreatorで変換する

ArListOnMap.java
  /** ListをArCreatorで変換する */
  public static <$Key,$Value,$NewValue> Map<$Key,$NewValue> convertListByArCreator(Map<$Key,List<$Value>> listOnMap,ArCreator<List<$Value>,$NewValue> creator) throws Exception 

###二つのListOnMapの集合演算

  • 二つのListOnMapをANDする.キーだけではなくListの要素もANDする
  • 二つのListOnMapをORする
  • 二つのListOnMapをキーでXORする
  • 二つのListOnMapをXORする.キーでXORする.同一キーのものはListをXORする
  • 二つのListOnMapをキーでEXCEPTする
  • 二つのListOnMapをEXCEPTする.キーでEXCEPTする.同一キーのものはListでEXCEPTする

□ 二つのListOnMapの集合演算

ArListOnMap.java
  /** 二つのListOnMapをANDする.キーだけではなくListの要素もANDされる.結果のListには重複値はない. */
  public static <$Key,$Value> Map<$Key,List<$Value>> and(Map<$Key,List<$Value>> listOnMap0,Map<$Key,List<$Value>> listOnMap1) throws InstantiationException, IllegalAccessException 
  /** 二つのListOnMapをORする.結果のListには重複値が含まれうる */
  public static <$Key,$Value> Map<$Key,List<$Value>> or(Map<$Key,List<$Value>> listOnMap0,Map<$Key,List<$Value>> listOnMap1) throws InstantiationException, IllegalAccessException 
  /** 二つのListOnMapをキーでXORする */
  public static <$Key,$Value> Map<$Key,List<$Value>> xorKey(Map<$Key,List<$Value>> listOnMap0,Map<$Key,List<$Value>> listOnMap1) throws InstantiationException, IllegalAccessException 
  /** 二つのListOnMapをXORする.キーでXORする.同一キーのものはListをXORする */
  public static <$Key,$Value> Map<$Key,List<$Value>> xorList(Map<$Key,List<$Value>> listOnMap0,Map<$Key,List<$Value>> listOnMap1) throws InstantiationException, IllegalAccessException 
  /** 二つのListOnMapをキーでEXCEPTする */
  public static <$Key,$Value> Map<$Key,List<$Value>> exceptKey(Map<$Key,List<$Value>> listOnMap0,Map<$Key,List<$Value>> listOnMap1) throws InstantiationException, IllegalAccessException 
  /** 二つのListOnMapをEXCEPTする.キーでEXCEPTする.同一キーのものはListでEXCEPTする  */
  public static <$Key,$Value> Map<$Key,List<$Value>> exceptList(Map<$Key,List<$Value>> listOnMap0,Map<$Key,List<$Value>> listOnMap1) throws InstantiationException, IllegalAccessException 

###二つのListOnMapの等値判定

  • 二つのListOnMapの等値判定.Listの判定には重複値無視、順番無視、null値無視を指定可能

□ 二つのListOnMapの等値判定

ArListOnMap.java
  /** 二つのListOnMapの等値判定.Listの判定には重複値無視、順番無視、null値無視を指定可能 */
  public static <$Key,$Value> boolean equals(Map<$Key,List<$Value>> listOnMap0,Map<$Key,List<$Value>> listOnMap1,ArSeqIgnore seqIgnore,ArNullIgnore nullIgnore,ArDuplicateIgnore dupIgnore) 
  /** 指定されたListを含むキーを取得する.Listの判定には重複値無視、順番無視、null値無視を指定可能 */
  public static <$Key, $Value> Set<$Key> selectKeyByList(Map<$Key,List<$Value>> listOnMap,List<$Value> list,ArSeqIgnore seqIgnore,ArNullIgnore nullIgnore,ArDuplicateIgnore dupIgnore) 

#データ構造構築用クラス(Artery独自)(01)

  • ArBiMap - 双方向Map
  • ArMatrix - 二次元Map

ArBiMap - 双方向Map

便宜的に「キー」「値」という用語を使用しているが、機能上の両者の区別はない。

###概要

  • ArBiMapの生成
  • ArBiMapの設定・取得・削除
  • ArBiMapのキーと値の存在確認
  • ArBiMapの要素の抽出
  • ArBiMapの他の構造への変換
  • 二つのArBiMapの論理演算

ArBiMapの生成

  • コンストラクタ
  • ArBiMapから生成する
  • 二つの配列から生成する
  • Mapから生成する
  • 二次元配列から生成する
  • TaggedCsvから生成する

□ コンストラクタ

ArBiMap.java
  /** コンストラクタ.  */
  public ArBiMap()

□ ArBiMapから生成する

ArBiMap.java
  /** コンストラクタ.ArBiMapから作成する */
  public ArBiMap(ArBiMap<T0,T1> biMap) 

□ 二つの配列から生成する

ArBiMap.java
  /** コンストラクタ.二つの配列からArBiMapを作成する. */
  public ArBiMap(T0[] keys,T1[] values) 

□ Mapから生成する

ArBiMap.java
  /** コンストラクタ.MapからArBiMapを生成する.*/
  public static <T0,T1> ArBiMap<T0,T1> constructFromMap(Map<T0,T1> map) 

□ 二次元配列から生成する

ArBiMap.java
  /** コンストラクタ.二次元配列から生成する.キーのインデックスは0、値のインデックスは1. */
  public <T> ArBiMap(T[][] keysAndValues) 
  /** コンストラクタ.二次元配列からキーと値のインデックスを指定してArBiMapを作成する.*/
  public ArBiMap(T0[][] keysAndValues,int keyIndex,int valueIndex) 

□ TaggedCsvから生成する

ArBiMap.java
  /** コンストラクタ.TaggedCsvから作成する. */
  public ArBiMap(String str) 

ArBiMapの設定・取得・削除

  • Key⇒Valueを設定する.
  • KeyからValueを取得する
  • Valueからキーを取得する
  • キーの一覧を取得する
  • 値の一覧を取得する.
  • キーを元に削除する.対応するValueが戻される.
  • Valueを元に削除する.対応するKeyが戻される.
  • クリアする.

□ Key⇒Valueを設定する.

ArBiMap.java
  /**  Key⇒Valueを設定する.   */
  public void putKeyValue(T0 key,T1 value)

□ KeyからValueを取得する

ArBiMap.java
  /**  KeyからValueを取得する.  */
  public T1 getByKey(T0 key)

□ Valueからキーを取得する

ArBiMap.java
  /**  Valueからキーを取得する.  */
  public T0 getByValue(T1 value)

□ キーの一覧を取得する

ArBiMap.java
  /** キーの一覧を取得する. */
  public Set<T0> keySet()

□ 値の一覧を取得する.

ArBiMap.java
  /** 値の一覧を取得する. */
  public Set<T1> valueSet()

□ キーを元に削除する.対応するValueが戻される.

ArBiMap.java
  /**  キーを元に削除する.対応するValueが戻される.*/
  public T1 removeByKey(T0 key)

□ Valueを元に削除する.対応するKeyが戻される.

ArBiMap.java
  /**  Valueを元に削除する.対応するKeyが戻される. */
  public T0 removeByValue(T1 value)

□ クリアする.

ArBiMap.java
  /** クリアする. */
  public void clear() 

ArBiMapのキーと値の存在確認

  • データ数を戻す.
  • キーの存在確認.
  • 値の存在確認.

□ データ数を戻す.

ArBiMap.java
  /** データ数を戻す. */
  public int size() 

□ キーの存在確認.

ArBiMap.java
  /** キーの存在確認. */
  public boolean containsKey(T0 key) 
  /** キーの存在確認 */
  public boolean containsKey(ArValidator<T0> validator)

□ 値の存在確認.

ArBiMap.java
  /** 値の存在確認. */
  public boolean containsValue(T1 value) 
  /** 値の存在確認 */
  public boolean containsValue(ArValidator<T1> validator) 

ArBiMapの要素の抽出

  • 条件を満足する(しない)キーを抽出する
  • 条件を満足する(しない)値を抽出する
  • 条件を満足する(しない)キーで要素を抽出する
  • 条件を満足する(しない)値で要素を抽出する

□ 条件を満足する(しない)キーを抽出する

ArBiMap.java
  /** validatorを満足するキーの一覧を取得する */
  public Set<T0> selectKey(ArValidator<T0> validator) throws InstantiationException, IllegalAccessException 
  /** validatorを満足しないキーの一覧を取得する */
  public Set<T0> selectKeyExcept(ArValidator<T0> validator) throws InstantiationException, IllegalAccessException 

□ 条件を満足する(しない)値を抽出する

ArBiMap.java
  /** validatorを満足する値の一覧を取得する */
  public Set<T1> selectValue(ArValidator<T1> validator) throws InstantiationException, IllegalAccessException 
  /** validatorを満足しない値の一覧を取得する */
  public Set<T1> selectValueExcept(ArValidator<T1> validator) throws InstantiationException, IllegalAccessException 

□ 条件を満足する(しない)キーで要素を抽出する

ArBiMap.java
  /** キーをvalidatorで選択して新しいArBiMapを作成する.  */
  public ArBiMap<T0,T1> selectByKey(ArValidator<T0> validator) 
  /** validatorに合致しないキーを選択して新しいArBiMapを作成する.  */
  public ArBiMap<T0,T1> selectByKeyExcept(ArValidator<T0> validator)

□ 条件を満足する(しない)値で要素を抽出する

ArBiMap.java
  /** 値をvalidatorで選択して新しいArBiMapを作成する.  */
  public ArBiMap<T0,T1> selectByValue(ArValidator<T1> validator) 
  /** validatorに合致しない値を選択して新しいArBiMapを作成する.  */
  public ArBiMap<T0,T1> selectByValueExcept(ArValidator<T1> validator) 

ArBiMapの他の構造への変換

  • Mapに変換する
  • キーをMapで示された別のキーに変換する
  • 値をMapで示された別の値に変換する

□ Mapに変換する

ArBiMap.java
  /** Mapに変換する.キー→値 */
  public Map<T0,T1> toMap() 
  /** Mapに変換する.値→キー */
  public Map<T0,T1> toReverseMap() 

□ キーをMapで示された別のキーに変換する

ArBiMap.java
  /** キーをMapで示された別のキーに変換する */
  public void changeKey(Map<T0,T0> map) 

□ 値をMapで示された別の値に変換する

ArBiMap.java
  /** 値をMapで示された別の値に変換する */
  public void changeValue(Map<T1,T1> map) 

二つのArBiMapの論理演算

  • AND
  • OR
  • XOR
  • EXCEPT

□ AND

ArBiMap.java
  /** キーでANDして新しいArBiMapを作成する */
  public static ArBiMap<T0,T1> andKey(ArBiMap<T0,T1> biMap0,ArBiMap<T1,T1> biMap1)
  /** 値でANDして新しいArBiMapを作成する */
  public static ArBiMap<T0,T1> andValue(ArBiMap<T0,T1> biMap0,ArBiMap<T1,T1> biMap1)

□ OR

ArBiMap.java
  /** キーでORして新しいArBiMapを作成する */
  public static ArBiMap<T0,T1> orKey(ArBiMap<T0,T1> biMap0,ArBiMap<T1,T1> biMap1)
  /** 値でORして新しいArBiMapを作成する */
  public static ArBiMap<T0,T1> orValue(ArBiMap<T0,T1> biMap0,ArBiMap<T1,T1> biMap1)

□ XOR

ArBiMap.java
  /** キーでXORして新しいArBiMapを作成する */
  public static ArBiMap<T0,T1> xorKey(ArBiMap<T0,T1> biMap0,ArBiMap<T1,T1> biMap1)
  /** 値でXORして新しいArBiMapを作成する */
  public static ArBiMap<T0,T1> xorValue(ArBiMap<T0,T1> biMap0,ArBiMap<T1,T1> biMap1)

□ EXCEPT

ArBiMap.java
  /** キーでEXCEPTして新しいArBiMapを作成する */
  public static ArBiMap<T0,T1> exceptKey(ArBiMap<T0,T1> biMap0,ArBiMap<T1,T1> biMap1)
  /** 値でEXCEPTして新しいArBiMapを作成する */
  public static ArBiMap<T0,T1> exceptValue(ArBiMap<T0,T1> biMap0,ArBiMap<T1,T1> biMap1)

ArMatrix - 二次元Map

###概要

  • ArMatrixの生成
  • ArMatrixの値の設定、取得、削除
  • ArMatrixの存在確認
  • ArMatrixの要素の抽出
  • ArMatrixの変換
  • 二つのArMatrixの論理演算
  • 二つのArMatrixの等値判定・包含判定

ArMatrixの生成

  • コンストラクタ
  • 二段MapからArMatrixを生成する
  • Collectionからキーフィールドを指定してArMatrixを生成する
  • CollectionからArCreatorを指定してArMatrixを生成する

□ コンストラクタ

ArMatrix.java
  /** コンストラクタ. */
  public ArMatrix()
  /** コンストラクタ */
  public ArMatrix(ArMatrix<T0,T1,T2> mat)

□ 二段MapからArMatrixを生成する

ArMatrix.java
  /** 二段MapからArMatrixを生成する */
  public ArMatrix(ArMatrix<T0,T1,T2> mat) 

□ Collectionからキーフィールドを指定してArMatrixを生成する

ArMatrix.java
  /** コンストラクタ.Collectionからキーフィールドを指定して生成  */
  public ArMatrix(Collection<T2> collection,String key0Field,String key1Field) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, InvocationTargetException

□ CollectionからArCreatorを指定してArMatrixを生成する

ArMatrix.java
  /** コンストラクタ.CollectionからArCreatorを指定して生成 */
  public ArMatrix(Collection<T2> collection,ArCreator<T2,T0> key0Creator,ArCreator<T2,T1> key1Creator) throws Exception {

ArMatrixの値の設定、取得、削除

  • 更新モードを設定する.この値によっては、putしても無視される
  • 値を設定する.
  • 値を取得する.
  • キー0でMapを取得する.
  • キー1でMapを取得する.
  • キー0の一覧を取得する.
  • キー1の一覧を取得する.
  • 値の一覧を取得する.
  • 値の削除..
  • key0による要素の削除..
  • key1による要素の削除.
  • 全データクリア.

□ 更新モードを設定する.この値によっては、putしても無視される

ArMatrix.java
  /**
   * 更新モードを設定する.この値によっては、putしても無視される.初期値はALWAYSとなっている.
   *  mode : ArUpdateMode.ALWAYS        常に追加・更新する
   *  mode : ArUpdateMode.NOT           常に追加・更新しない
   *  mode : ArUpdateMode.IF_EXISTS     キーが存在すれば更新する
   *  mode : ArUpdateMode.IF_NOT_EXISTS キーが存在していなければ追加する
   */
  public void setUpdateMode(ArUpdateMode mode)

□ 値を設定する.値を取得する.

ArMatrix.java
  /** 値を設定する. */
  public void put(T0 key0,T1 key1,T2 value) 
  /** 値を取得する. */
  public T2 get(T0 key0,T1 key1)

□ キー0でMapを取得する.

ArMatrix.java
  /** キー0でMapを取得する. */
  public Map<T1,T2> getByKey0(T0 key0) 

□ キー1でMapを取得する.

ArMatrix.java
  /** キー1でMapを取得する. */
  public Map<T0,T2> getByKey1(T1 key1) 

□ キー0の一覧を取得する.キー1の一覧を取得する.

ArMatrix.java
  /** キー0の一覧を取得する. */
  public Set<T0> key0Set() 
  /** キー1の一覧を取得する. */
  public Set<T1> key1Set() 

□ 値の一覧を取得する.

ArMatrix.java
  /** 値の一覧を取得する.同一値がある場合は重複して取得される.null値は取得されない. */
  public List<T2> values() 

□ 値の削除..

ArMatrix.java
  /** 値の削除.. */
  public T2 remove(T0 key0,T1 key1) 

□ key0による要素の削除..

ArMatrix.java
  /** key0による要素の削除.. */
  public void removeByKey0(T0 key0) 

□ key1による要素の削除.

ArMatrix.java
  /** key1による要素の削除.. */
  public void removeByKey1(T1 key1) 

□ 全データクリア.

ArMatrix.java
  /** 全データクリア. */
  public void clear() 

ArMatrixの存在確認

  • キーの存在確認
  • 要素の存在確認
  • 値の存在確認
  • 要素数のカウント

□ キーの存在確認

ArMatrix.java
  /** キーの存在確認. */
  public boolean containsKey(T0 key0,T1 key1) 

□ 要素の存在確認

ArMatrix.java
  /** 要素の存在確認 */
  public boolean containsElement(T0 key0,T1 key1,T2 value) 

□ 値の存在確認

ArMatrix.java
  /** 値の存在確認 */
  public boolean containsValue(T2 value) 
  /** 値の存在確認 */
  public boolean containsValue(ArValidator<T2> validator) 

□ 要素数のカウント

ArMatrix.java
  /** 全データ数を戻す. */
  public int totalSize() 
  /** 値に一致する要素数をカウントする. */
  public int countValue(T2 value) 
  /** 値に一致する要素数をカウントする. */
  public int countValue(ArValidator<T2> validator) 

ArMatrixの要素の抽出

  • キー0に合致する(合致しない)要素の抽出
  • キー1に合致する(合致しない)要素の抽出
  • 値に合致する(合致しない)要素の抽出

□ キー0に合致する(合致しない)要素の抽出

ArMatrix.java
  /** validatorに合致するKey0を選択して新しいArMatrixを作成する. */
  public ArMatrix<T0,T1,T2> selectByKey0(ArValidator<T0> validator)  
  /** validatorに合致しないKey0を選択して新しいArMatrixを作成する. */
  public ArMatrix<T0,T1,T2> selectByKey0Except(ArValidator<T0> validator) 

□ キー1に合致する(合致しない)要素の抽出

ArMatrix.java
  /** validatorに合致するKey1を選択して新しいArMatrixを作成する.*/
  public ArMatrix<T0,T1,T2> selectByKey1(ArValidator<T1> validator) 
  /** validatorに合致しないKey1を選択して新しいArMatrixを作成する. */
  public ArMatrix<T0,T1,T2> selectByKey1Except(ArValidator<T1> validator)  

□ 値に合致する(合致しない)要素の抽出

ArMatrix.java
  /** 値で選択して新しいArMatrixを作成する. */
  public ArMatrix<T0,T1,T2> selectByValue(T2 element) 
  /** validatorに合致する値で選択して新しいArMatrixを作成する. */
  public ArMatrix<T0,T1,T2> selectByValue(ArValidator<T2> validator) 
  /** validatorに合致しない値で選択して新しいArMatrixを作成する. */
  public ArMatrix<T0,T1,T2> selectByValueExcept(ArValidator<T2> validator) 

ArMatrixの変換

  • key0とkey1を交換する
  • 値を一括変換する
  • MapOnMapに変換する.

□ key0とkey1を交換する

ArMatrix.java
  /** key0とkey1を交換する  */
  public ArMatrix<T1,T0,T2> exchangeKey() 

□ 値を一括変換する

ArMatrix.java
  /** 値をvalueMapで示される値に変更する.他の値は元のまま */
  public void changeValue(Map<T2,T2> valueMap) 
  /** creatorで値をT3オブジェクトに変換したArMatrixを作成する. */
  public <T3> ArMatrix<T0,T1,T3> convert(ArCreator<T2,T3> creator) throws Exception 

□ MapOnMapに変換する.

ArMatrix.java
  /** MapOnMapに変換する. */
  public Map<T0,Map<T1,T2>> toMapOnMap() throws InstantiationException, IllegalAccessException 

二つのArMatrixの論理演算

  • 他のArMatrixとのAND演算
  • 他のArMatrixとのOR演算
  • 他のArMatrixとのXOR演算
  • 他のArMatrixとのEXCEPT演算

□ 他のArMatrixとのAND演算

ArMatrix.java

□ 他のArMatrixとのOR演算

ArMatrix.java

□ 他のArMatrixとのXOR演算

ArMatrix.java

□ 他のArMatrixとのEXCEPT演算

ArMatrix.java

#重要なインターフェース(02)

インターフェースはかなりの数があるが、以下のものを紹介する。これらは本ライブラリを利用したプログラミングに重要な役割を果たすが、本ライブラリの内部でもかなり利用している。

  • ArValidator - 一つの引数⇒true/false
  • ArValidator2d - 二つの引数⇒true/false
  • ArCreator - 一つの引数を別の値に変換する
  • ArCreator2d - 二つの引数を別の値に変換する
  • ArCreator3d - 三つの引数を別の値に変換する

##ArValidator - 一つの引数⇒true/false(02_00)

###定義

ArValidator.java
/** 指定されたオブジェクトの正当性を判定するインターフェース. */
public interface ArValidator<T> {
  /**
   *  指定されたオブジェクトを判定する.
   *  @param value 判定対象オブジェクト.
   */
  public boolean check(T value)

###使用例

##ArValidator2d - 二つの引数⇒true/false(02_01)

###定義

ArValidator2d.java
/** 二つの値を元に正当性をチェックするインターフェース */
public interface ArValidator2d<$arg0,$arg1> {
  /** 値をチェックする */
  public boolean check($arg0 arg0,$arg1 arg1)
}

###使用例

##ArCreator - 一つの引数を別の値に変換する(02_02)

###定義

ArCreator.java
/** 指定されたオブジェクトから別のオブジェクトを生成するインタフェース. */
public interface ArCreator<T0,T1> {
  /** objからT1クラスのオブジェクトを生成する.実装がどのような処理をしているか分からないのでExceptionをthrowしておく. */
  public T1 convert(T0 obj) throws Exception;
}

###使用例

##ArCreator2d - 二つの引数を別の値に変換する(02_03)

###定義

ArCreator2d.java
/** 二つの値を元に別の値を生成するインターフェース */
public interface ArCreator2d<$Arg0,$Arg1,$Value> {
  /** arg0とarg1から$valueクラスのオブジェクトを生成する.実装がどのような処理をしているか分からないのでExceptionをthrowしておく. */
  public $Value convert($Arg0 arg0,$Arg1 arg1) throws Exception;
}

###使用例

##ArCreator3d - 三つの引数を別の値に変換する(02_04)

###定義

ArCreator3d.java
/** 三つの値を元に別の値を生成するインターフェース */
public interface ArCreator3d<$Arg0,$Arg1,$Arg2,$Value> {
  /** arg0とarg1から$valueクラスのオブジェクトを生成する.実装がどのような処理をしているか分からないのでExceptionをthrowしておく. */
  public $Value convert($Arg0 arg0,$Arg1 arg1,$Arg2 arg2) throws Exception;
}

###使用例

#データ保持用クラス(03)

  • タプル(ArTuple) - 二つ組のデータ
  • トリップル(ArTriple) - 三つ組のデータ
  • CSV(ArCsv) - カンマ区切り文字列
  • TaggedCSV(ArTaggedCsv) - カンマ区切りの二つ組文字列

##タプル(ArTuple) - 二つ組のデータ(03_00)

###概要

二つ組のデータを表現するクラス。それとは別に任意のオブジェクトを一つ格納できる。

##トリップル(ArTriple) - 三つ組のデータ(03_01)

###概要

三つ組のデータを表現するクラス。それとは別に任意のオブジェクトを一つ格納できる。

##CSV(ArCsv) - カンマ区切り文字列(03_02)

###概要

カンマで区切られた文字列を表現するクラス。区切り文字はカスタマイズ可能。

##TaggedCSV(ArTaggedCsv) - カンマ区切りの二つ組文字列(03_03)

###概要

以下のような文字列を表現するクラス。区切り文字はカスタマイズ可能。
name=suzuki,address=tokyou,age=30

#文字列処理(04)

  • 文字列の加工
  • 文字数、バイト数関連
  • スペース関連の判定、変換
  • 右寄せ、左寄せ、センタリング
  • 引用符
  • 文字タイプチェック
  • 文字列の置換
  • 日時を表す文字列の処理
  • 数字を表す文字列の処理
  • 文字列を分割して配列、List、Setにする
  • 文字列の結合
  • 改行、大文字・小文字、スペース・タブを無視した文字列比較
  • Javaシンボルの処理
  • EBCDIC変換

文字列の加工

  • 先頭の文字を大文字にする.
  • 先頭の文字を小文字にする.
  • タイトルケース(先頭大文字、後小文字)に変換する
  • 文字列を括弧で囲む.
  • 括弧の中の文字列を取り出す.
  • 文字列の置換

□ 先頭の文字を大文字にする.

ArStr.java
  /** 先頭の文字を大文字にする. */
  public static String topUpper(String str) 

□ 先頭の文字を小文字にする.

ArStr.java
  /** 先頭の文字を小文字にする. */
  public static String topLower(String str)

□ タイトルケース(先頭大文字、後小文字)に変換する

ArStr.java
  /** タイトルケース(先頭大文字、後小文字)に変換する*/
  public static String toTitleCase(String str)

□ 文字列を括弧で囲む.

ArStr.java
  /**
   *  文字列を括弧で囲む.bracketのサイズは2.
   *  bracketは()や[]、【】などを指定する.当メソッドでカッコであることのチェックはしない.
   */
  public static String wrapBracket(String str,String[] bracket)

□ 括弧の中の文字列を取り出す.

ArStr.java
  /**
   *  括弧の中の文字列を取り出す.
   *  strの両端がbracketと一致してない場合は元のstrを戻す.
   *  @param bracket String[2],両端の括弧を表す.注、括弧かどうかはチェックしていない.
   */
  public static String unwrapBracket(String str,String[] bracket) 
  /** 両端がCharDef.BRACKET_LISTのいずれかに一致していれば両端の括弧を外して戻す. */
  public static String unwrapBracket(String str) 

□ 文字列の置換

ArStr.java
  /**
   *  strの中のoldStrをnewStrで置換する.oldStrが複数ある場合はすべて置換する.
   *  注、作成意図.StringのreplaceAllはsymbolが正規表現なので、正規表現でないもので置換したいため.
   */
  public static String replaceAll(String str,String oldStr,String newStr) 

文字数、バイト数関連

  • 文字列のバイト数を計算する.
  • 文字列を指定バイト数になるように、後ろを削除する.
  • 指定バイト数になるようにスペースを追加する.
  • 後に文字を追加して指定長さにする.
  • 前に文字を挿入して指定長さにする.
  • 文字列を指定された回数繰り返す.

□ 文字列のバイト数を計算する.

ArStr.java
  /** 文字列のバイト数を計算する. */
  public static long byteLength(String str,String charset) throws UnsupportedEncodingException

□ 文字列を指定バイト数になるように、後ろを削除する.

ArStr.java
  /** 文字列を指定バイト数になるように、後ろを削除する. */
  public static String deleteLast(String str,String charSet,long len) throws UnsupportedEncodingException 

□ 指定バイト数になるようにスペースを追加する.

ArStr.java
  public static String append(String str,String charSet,long len) throws UnsupportedEncodingException 

□ 後に文字を追加して指定長さにする.

ArStr.java
  /**
   *  後に文字(val)を追加して指定長さにする.
   *  valの長さは1(でなければ変換しない).
   */
  public static String append(String str,int len,String val)

□ 前に文字を挿入して指定長さにする.

ArStr.java
  /**
   *  前に文字(val)を挿入して指定長さにする.
   *  valの長さは1(でなければ変換しない).
   */
  public static String insert(String str,int len,String val) 

□ 文字列を指定された回数繰り返す.

ArStr.java
  /** 文字列を指定された回数繰り返す. */
  public static String repeat(String str,Integer cnt) 

スペース関連の判定、変換

  • nullを空文字列("")に変換する.
  • nullまたは空文字列("")であるか判定する.
  • nullでもなく空文字列("")でもないことを確認する.
  • スペース、タブであるかを判定する.
  • スペース、タブ、全角スペースであるかを判定する.
  • 先頭がスペース、タブ、全角スペースであるか判定する.
  • 最後がスペース、タブ、全角スペースであるか判定する.
  • 全角⇒半角スペース変換.
  • 半角⇒全角スペース変換.
  • 前(スペース、タブ)を削除する.
  • 前(スペース、タブ、全角スペース)を削除する.
  • 後(スペース、タブ)を削除する.
  • 後(スペース、タブ、全角スペース)を削除する.
  • 前後のスペース、タブ、全角スペースを削除する.
  • 複数のスペース、タブを一つにまとめる.

□ nullを空文字列("")に変換する.

ArStr.java
  /**
   *  nullを空文字列("")に変換する.
   *  nullでなければ、元の文字列を戻す.
   */
  public static String nullToEmpty(String str) 

□ nullまたは空文字列("")であるか判定する.

ArStr.java
  /** nullまたは空文字列("")であるか判定する. */
  public static boolean isNullOrEmpty(String s) 

□ nullでもなく空文字列("")でもないことを確認する.

ArStr.java
  /** nullでもなく空文字列("")でもないことを確認する. */
  public static boolean isNotNullOrEmpty(String s) 

□ スペース、タブであるかを判定する.

ArStr.java
  /** スペース、タブであるかを判定する. */
  public static Boolean isSpace(String s) 

□ スペース、タブ、全角スペースであるかを判定する.

ArStr.java
  /** スペース、タブ、全角スペースであるかを判定する. */
  public static Boolean isJSpace(String s) 

□ 先頭がスペース、タブ、全角スペースであるか判定する.

ArStr.java
  /** 先頭がスペース、タブ、全角スペースであるか判定する. */
  public static boolean startsWithJSpace(String s) 

□ 最後がスペース、タブ、全角スペースであるか判定する.

ArStr.java
  /** 最後がスペース、タブ、全角スペースであるか判定する. */
  public static Boolean endsWithJSpace(String s) 

□ 全角⇒半角スペース変換.

ArStr.java
  /** 全角⇒半角スペース変換. */
  public static String jSpaceToESpace(String str) 

□ 半角⇒全角スペース変換.

ArStr.java
  /** 半角⇒全角スペース変換. */
  public static String eSpaceToJSpace(String str) 

□ 前(スペース、タブ)を削除する.

ArStr.java
  /** 前(スペース、タブ)を削除する. */
  public static String trimLeadingESace(String str) 

□ 前(スペース、タブ、全角スペース)を削除する.

ArStr.java
  /** 前(スペース、タブ、全角スペース)を削除する. */
  public static String trimLeadingJSace(String str) 

□ 後(スペース、タブ)を削除する.

ArStr.java
  /** 後(スペース、タブ)を削除する. */
  public static String trimTrailingESace(String str)  

□ 後(スペース、タブ、全角スペース)を削除する.

ArStr.java
  /** 後(スペース、タブ、全角スペース)を削除する. */
  public static String trimTrailingJSace(String str) {

□ 前後のスペース、タブ、全角スペースを削除する.

ArStr.java
  /** 前後のスペース、タブ、全角スペースを削除する.String.trim()の拡張. */
  public static String trim(String str) {

□ 複数のスペース、タブを一つにまとめる.

ArStr.java
  /**
   * 複数のスペース、タブを一つにまとめる.
   * @param str 処理対象の文字列
   * @param collect 処理方法、SPACE_ONLY:スペースだけ、TAB_ONLY:タブだけ、EACH:スペースとタブを別々に、BOTH:スペースとタブを纏めて処理(結果はスペース)
   * @return 処理結果の文字列
   */
  public static String collectSpaceTab(String str,ArSpaceTabCollect collect) 

右寄せ、左寄せ、センタリング

  • 左寄せを行う.
  • 右寄せを行う.
  • センタリングを行う.

□ 左寄せ、右寄せ、センタリング

ArStr.java
  /**
   * 左寄せを行う.
   * widthは仕上がりの幅(文字数).
   * widthが足りない時、cutがArCut.YESならばwidthに縮める、ArCut.NOならばstrをそのまま戻す.
   */
  public static String lefting(String str,int width,ArCut cut) 
  /**
   * 右寄せを行う.
   * widthは仕上がりの幅(文字数).
   * widthが足りない時、cutがArCut.YESならばwidthに縮める、ArCut.NOならばstrをそのまま戻す.
   */
  public static String righting(String str,int width,ArCut cut) 
  /**
   * センタリングを行う.
   * widthは仕上がりの幅(文字数).
   * widthが足りない時、cutがArCut.YESならばwidthに縮める、ArCut.NOならばstrをそのまま戻す.
   */
  public static String centering(String str,int width,ArCut cut) 

引用符

  • 両端の引用符(")を削除する.
  • 両端に引用符をつける.

□ 引用符をつける、引用符を削除する

ArStr.java
  /**
   *  両端の引用符(")を削除する.
   *  引用符がなければ、そのまま戻す.
   */
  public static String removeQuote(String str) 
  /**
   * 両端に引用符をつける.
   * 中に引用符があればエスケープする.
   */
  public static String quote(String str) 

文字タイプチェック

  • 英字
  • 先頭英字
  • 英数字
  • 先頭英字、後は英数字
  • 大英字
  • 先頭大英字
  • 先頭大英字、後英字
  • 先頭大英字、後英数字
  • 先頭大英字、後大英数字
  • 小英字
  • 先頭小英字
  • 先頭小英字、後英字
  • 先頭小英字、後英数字
  • 先頭小英字、後小英数字
  • java識別子
  • 数字
  • 先頭0以外の数字、後数字
  • 数字(三桁ごとカンマ)
  • 郵便番号
  • 携帯電話番号

□ 文字タイプチェック

ArStr.java
  /** 英字. */
  public static boolean is_Alpha(String str) 
  /** 先頭英字. */
  public static boolean is_TopAlpha(String str) 
  /** 英数字. */
  public static boolean is_AlphaNumeric(String str) 
  /** 先頭英字、後は英数字. */
  public static boolean is_TopAlpha_AlphaNumeric(String str) 
  /** 大英字. */
  public static boolean is_UAlpha(String str) 
  /** 先頭大英字. */
  public static boolean is_TopUAlpha(String str) 
  /** 先頭大英字、後英字. */
  public static boolean is_TopUAlpha_Alpha(String str) 
  /** 先頭大英字、後英数字. */
  public static boolean is_TopUAlpha_AlphaNumeric(String str) 
  /** 先頭大英字、後大英数字. */
  public static boolean is_TopUAlpha_UAlphaNumeric(String str) 
  /** 小英字. */
  public static boolean is_LAlpha(String str) 
  /** 先頭小英字. */
  public static boolean is_TopLAlpha(String str) 
  /** 先頭小英字、後英字. */
  public static boolean is_TopLAlpha_Alpha(String str) 
  /** 先頭小英字、後英数字. */
  public static boolean is_TopLAlpha_AlphaNumeric(String str) 
  /** 先頭小英字、後小英数字. */
  public static boolean is_TopLAlpha_LAlphaNumeric(String str) 
  /** java識別子. */ // 数字、英字、_ $  // 数字以外は先頭にできる
  public static boolean is_JavaIdentifier(String str) 
  /** 数字.注、Integerでparseした方が良い. */
  public static boolean is_Numeric(String str) 
  /** 先頭0以外の数字、後数字. */
  public static boolean is_TopNonZeroNumeric_Numeric(String str) 
  /** 数字(三桁ごとカンマ). */
  public static boolean is_CommaNumeric(String str) 
  /** 郵便番号. */
  public static boolean is_PostalCode(String str) 
  /** 携帯電話番号. */
  public static boolean is_Cellular(String str) 

文字列の置換

  • 文字列の置換
ArStr.java
  /** 文字列の中の${xxxx}形式の変数をnames[xxxx]に対応するvals[]の値で置換する. */
  public static String replaceSymbols(String str,String[] symbols,String[] vals) 
  /** 文字列の中の${xxxx}形式の変数をMapのxxxxキーの値で置換する. */
  public static String replaceSymbols(String str,Map<String,String> map) 
  /** ${xxx} 形式のxxxを取り出す.同じものか複数回あっても一回のみ. */
  public static Set<String> getVariableSymbols(String str) 

日時を表す文字列の処理

  • SimpleDateFormatで扱う形式の文字列を置換する
ArStr.java
  /**
   *  ${DATExxxx}を現在日時で置換する.
   *  xxxxはSimpleDateFormatで扱う形式.
   */
  public static String replaceByDate(String str) 
  /**
   *  ${DATExxxx}を日時などで置換する.
   *  xxxxはSimpleDateFormatで扱う形式.
   */
  public static String replaceByDate(String str,java.util.Date date) 
  /**
   *  ${DATExxxx}を日時などで置換する.
   *  xxxxはSimpleDateFormatで扱う形式.
   */
  public static String replaceByDate(String str,java.util.Calendar cal) 
  /**
   *  ${DATExxxx}を日時などで置換する.
   *  xxxxはSimpleDateFormatで扱う形式.
   */
  public static String replaceByDate(String str,long time) 

数字を表す文字列の処理

  • 指定長さにする
  • 三桁ごとにカンマを挿入する
  • 間瀬ゼロを削除する

□ 数字を表す文字列の処理

ArStr.java
  /**
   *  strの前に文字(val)を挿入して指定長さにする.
   *  nullならばnullを戻す.
   *  valの長さは1(でなけれ変換しない).
   *  注、NumStrに同一メソッドあり、それが当メソッドを呼び出している.
   */
  public static String insertTop(String str,int len,String val) 
  /** 三桁ごとにカンマを挿入. */
  public static String insertComma(String val) 
  /** 前ゼロを削除する.deleteLeadingZeroと同一. */
  public static String removeLeadingZero(String str) 

文字列を分割して配列、List、Setにする

□ 文字列を分割して配列、List、Setにする

ArStr.java
  /** カンマ(など)で分割し配列にする.(String.splitの再定義). */
  public static String[] splitToArray(String str,char sep) 
  /** カンマ(など)で分割しリストにする. */
  public static List<String> splitToList(String str,char sep) 
  /** カンマなどで分割しセットにする.(セットなので要素が重複していれば集約される). */
  public static Set<String> splitToSet(String str,char sep) throws InstantiationException, IllegalAccessException 

文字列の結合

  • 指定文字列の繰り返し
  • StringのList/Setを文字列にする
  • Stringの配列を文字列にする

□ 文字列の結合

ArStr.java
  /** strをcount回数だけsepで結合する. */
  public static String join(char sep,String str,int count) 
  /** StringのListをsepで結合する. */
  public static String join(char sep,List<String> values) 
  /** String1の可変引数をsepで結合する. */
  public static String join(char sep,String... values) 
  /** String1のSetをsepで結合する. */
  public static String join(char sep,Set<String> values) 

改行、大文字・小文字、スペース・タブを無視した文字列比較

ArStr.java
  /**
   * 文字列を比較する.
   * @param arCase 大文字・小文字を無視するか否か
   * @param arSpace スペース/タブを無視するか否か.注、YESの場合は複数のスペースとタブを一つのスペースにして比較する.
   * @param arBreak 改行を無視するか否か.
   */
  public static int compare(String str0,String str1,ArCase arCase,ArSpaceIgnore arSpace,ArLineBreakIgnore arBreak) 

Javaシンボルの処理

  • setter名に変換する
  • getter名に変換する
  • _ を削除して、CamelCaseに変換する
  • _ を削除して、CamelCaseに変換し先頭を小文字にする.
  • 先頭の単語を削除する.
  • 先頭の単語を削除し、CamelCaseに変換する.
  • 先頭の単語を削除し、CamelCaseに変換し先頭を小文字にする.

□ Javaシンボルの処理

ArStr.java
  /** フィールド名をsetter名に変換する. */
  public static String setterName(String field) 
  /** フィールド名をgetter名に変換する. */
  public static String getterName(String field) 
  /**
   *  _ を削除して、CamelCaseに変換する.
   *  注、テーブル名をクラス名に変換するなどに使う.
   */
  public static String convertToCamelCase(String line) 
  /**
   *  指定文字(sep)を削除して、CamelCaseに変換する.
   *  注、テーブル名をクラス名に変換するなどに使う.
   */
  public static String convertToCamelCaseSep(String line,String sep) 
  /**
   *  _ を削除して、CamelCaseに変換し先頭を小文字にする.
   *  注、カラム名をフィールド名に変換するなどに使う.
   */
  public static String columnToField(String name) 
  /**
   * 指定文字(sep)を削除して、CamelCaseに変換し先頭を小文字にする.
   * 注、カラム名をフィールド名に変換するなどに使う.
   */
  public static String columnToFieldSep(String name,String sep) 
  /**
   *  先頭の単語を削除する.
   *  先頭となったsepも削除する.
   */
  public static String removeFirst(String name,String sep) 
  /**
   *  先頭の単語とsepを削除し、CamelCaseに変換する.
   *  注、テーブル名をクラス名に変換するなどに使う.
   *  deleteFirstWordToCamelCaseと同一.
   */
  public static String removeFirstWordToCamelCase(String name,String sep) 
  /**
   *  先頭の単語とsepを削除し、CamelCaseに変換し先頭を小文字にする.
   *  注、カラム名をフィールド名に変換するなどに使う.
   *  deleteFirstWordToFieldSepと同一.
   */
  public static String removeFirstWordToFieldSep(String name,String sep) {
  /**
   *  先頭の単語とさらに残りの _ を削除し、CamelCaseに変換し先頭を小文字にする.
   *  注、カラム名をフィールド名に変換するなどに使う.
   */
  public static String removeFirstWordToField(String name) 

EBCDIC変換

  • 文字列をEBCDICに変換する.
  • 数値をEBCDICに変換する.
  • EBCDICをintに変換する
  • EBCDICを文字列に変換する

□ EBCDIC変換

ArStr.java
  /** 文字列をEBCDICに変換する. */
  public static byte[] toEbcdic(String value) 
  /** 数値をEBCDICに変換する. */
  public static byte[] toEbcdic(int val,int len) 
  /** EBCDICをintに変換する */
  public static Integer fromEbcdicToInt(byte[] bytes) 
  /** EBCDICを文字列に変換する */
  public static String revertString(byte[] bytes) ```

#日付、時刻、曜日、休日(祝日)、和暦(05)

##概要

関係するクラスとしては以下のものがある

  • ArDate-日付のみを扱う
  • ArDateUtil-日時(Date,Calendar,long)関係のユーティリティクラス
  • ArYoubi-曜日のenum
  • ArHoliday-休日処理のインターフェース(実装クラスも提供)
  • ArWareki-和暦処理

##ArDate-日付のみを扱う

1900/01/01以降をサポートしている。

###概要

  • ArDateの生成
  • ArDateのDate,Calendar,longへの変換
  • ArDateの文字列への変換
  • ArDateの日数計算
  • ArDateの判定処理
  • ArDateその他

###ArDateの生成

  • 現在日や日付を指定した生成
  • Date,Calendar,longからの生成
  • 文字列からの生成
  • 曜日を指定した生成

□ 現在日や日付を指定した生成

ArDate.java
  /** コンストラクタ.現在日の取得. */
  public ArDate() 
  /** コンストラクタ.YYYY,MM,DDを指定して生成. */
  public ArDate(int yyyy,int mm,int dd) 
  /** コンストラクタ */
  public ArDate(ArDate date) 

□ Date,Calendar,longからの生成

ArDate.java
  /** コンストラクタ.java.util.Dateから変換. */
  public ArDate(java.util.Date date) 
  /** コンストラクタ.java.util.Calendarから変換. */
  public static ArDate(java.util.Calendar cal) 
  /** コンストラクタ.longから変換. */
  public ArDate(long time) 

□ 文字列からの生成

ArDate.java
  /** コンストラクタ.SimpleDateFormatを使用して文字列から変換する. */
  public static ArDate createFromString(String dateStr,String sdfStr) throws ParseException 
  /** コンストラクタ.SimpleDateFormatを使用して文字列から変換する. */
  public static ArDate construct(String dateStr,String sdfStr) throws ParseException 
  /**
   * コンストラクタ.文字列から変換する.以下の形式をサポート.
   * yyyy/mm/dd  ⇒ mm,ddは一桁でもよい.
   * yyyy-mm-dd  ⇒ mm,ddは一桁でもよい.
   * yyyy:mm:dd  ⇒ mm,ddは一桁でもよい.
   * yyy.mm.dd  ⇒ mm,ddは一桁でもよい.
   * yyyy年mm月dd日  ⇒ mm,ddは一桁でもよい.
   * yyyymmdd ⇒ mm,ddは二桁.
   * 上記形式でない時はRuntimeExceptionとなる.
   */
  public static ArDate createFromString(String str) 
  /**
   * コンストラクタ.文字列から変換する.以下の形式をサポート.
   * yyyy/mm/dd  ⇒ mm,ddは一桁でもよい.
   * yyyy-mm-dd  ⇒ mm,ddは一桁でもよい.
   * yyyy:mm:dd  ⇒ mm,ddは一桁でもよい.
   * yyy.mm.dd  ⇒ mm,ddは一桁でもよい.
   * yyyy年mm月dd日  ⇒ mm,ddは一桁でもよい.
   * yyyymmdd ⇒ mm,ddは二桁.
   * 上記形式でない時はRuntimeExceptionとなる.
   */
  public static ArDate construct(String str) 

□ 曜日を指定した生成

ArDate.java
  /**
   *  当該月の第n曜日を求める.
   *  存在しない場合はnullを戻す.
   */
  public static ArDate nthOfYoubi(int year,int month,ArYoubi youbi,int n)

###ArDateのDate,Calendar,longへの変換

ArDateは時刻を持っていないので0時0分となるが、時刻を指定して生成することもできる

□ Date,Calendar,longへの変換

ArDate.java
  /** java.util.Dateに変換. */
  public java.util.Date toDate() 
  /** java.util.Dateに変換. */
  public java.util.Date toDate(int hh,int mm,int ss) 
  /** java.util.Dateに変換. */
  public java.util.Date toDate(long diff) 
  /** longに変換. */
  public long toLong() 
  /** longに変換. */
  public long toLong(int hh,int mm,int ss) 
  /** longに変換. */
  public long toLong(long diff) 
  /** java.util.Calendarに変換. */
  public java.util.Calendar toCalendar() 
  /** java.util.Calendarに変換. */
  public java.util.Calendar toCalendar(int hh,int mm,int ss) 
  /** java.util.Calendarに変換. */
  public java.util.Calendar toCalendar(long diff) 

###ArDateの文字列への変換

□ 文字列への変換

ArDate.java
  /** yyyy/mm/ddに変換する. */
  public String toString() 
  /**
   *  yyyy-mm-ddに変換.
   *  -などはsepで指定可能.月日は必ず2桁となる.
   */
  public String toString(String sep) 
  /** SimpleDateFormatで文字列に変換. */
  public String toStringBySDF(String sdfStr) 

###ArDateの日数計算

  • ArDateを指定日数だけ進める、遅らせる
  • 二つのArDateの日数を計算する
  • ArDateのListを作成する
  • 上記いずれの場合も休日を考慮することもできる
    • 休日の処理についてはArHolidayを参照

□ 指定日数だけ進める、遅らせる

ArDate.java
  /**
   *  日数を進める(遅らせる).
   *  自オブジェクトを変更する.
   */
  public void forward(int n) {
  /**
   *  日数を進める(遅らせる).
   *  新オブジェクトを作る.
   */
  public static ArDate forward(ArDate date,int days) 
  /**
   *  日数を進める(遅らせる).
   *  新オブジェクトを作る.
   */
  public static ArDate constructForward(ArDate date,int days) 
  /**
   *  日数を進める(遅らせる).
   *  休日考慮-自オブジェクトを変更する.
   */
  public void forward(int n,ArHoliday holiday) 
  /**
   *  日数を進める(遅らせる).
   *  休日考慮-新オブジェクトを作る.
   */
  public static ArDate forward(ArDate date,int days,ArHoliday holiday) 
  /**
   *  日数を進める(遅らせる).
   *  休日考慮-新オブジェクトを作る.
   */
  public static ArDate constructForward(ArDate date,int days,ArHoliday holiday) 

□ 日数計算をする

ArDate.java
  /**
   *  日数計算.
   *  start<=endは前提.
   */
  public static int days(ArDate start,ArDate end) 
  /**
   * 日数計算.
   * 休日考慮.
   *  start<=endは前提.
   */
  public static int days(ArDate start,ArDate end,ArHoliday holiday) 

□ ArDateのListを作成する

ArDate.java
  /** fromDate(含む)からdays日のリストを戻す.daysにマイナスは不可.サイズはdays+1 */
  public static List<ArDate> dateList(ArDate fromDate,int days) 
  /** fromからtoまでの日付のリストを戻す */
  public static List<ArDate> dateList(ArDate from,ArDate to) 
  /** fromDate(含む)からdays日のリストを戻す.ただし休日は除く.fromDateが休日でないことが前提.daysにマイナスは不可.サイズはdays+1. */
  public static List<ArDate> dateList(ArDate fromDate,int days,ArHoliday holiday) 
  /** fromからtoまでの日付のリストを戻す.休日を考慮. */
  public static List<ArDate> dateList(ArDate from,ArDate to,ArHoliday holiday) 

###ArDateの判定処理

  • ArDate同士の等値判定、大小判定
  • Date,Calendar,longとの時刻を無視した同一日判定

□ 等値判定、大小判定

ArDate.java
  /** 等値判定.(年月日が同一の時に等しい). */
  @Override
  public boolean equals(Object o) 
  @Override
  /** 大小比較. */
  public int compareTo(ArDate pair) 

□ 時刻を無視した同一日判定

ArDate.java
  /** longと同一日付かを判定する.longが日の途中であっても同一とする.  */
  public boolean equals(long time) 
  /** Dateと同一日付かを判定する.Dateが日の途中であっても同一とする.  */
  public boolean equals(Date date) 
  /** Calendarと同一日付かを判定する.Calendarが日の途中であっても同一とする.  */
  public boolean equals(Calendar cal) 

###ArDateその他

ArDate.java
  /** 曜日を求める(ArDate). */
  public static ArYoubi youbi(ArDate date) 
  /** 当該月の日数を求める. */
  public static int daysOfMonth(ArDate date) 
  /** 当該月の日数を求める. */
  public static int daysOfMonth(int year,int month) 
  /** 年の日数を求める. */
  public static int daysOfYear(int year) 
  /** 当該月の最終日かを判定する. */
  public static boolean isLastDay(ArDate date) 
  /** うるう年判定. */
  public static boolean isLeapYear(int yyyy) 

##ArDateUtil-日時(Date,Calendar,long)関係のユーティリティクラス

###概要

  • 現在日時の取得
  • 指定日時の取得
  • Date⇔Calendarのコピー
  • 時刻の切り上げ、切り下げ
  • 時刻を進める、遅らせる
  • 同一日判定-時刻が違っても同一日と判定する
  • 現在時刻判定-誤差指定
  • 同一時刻判定-誤差指定
  • 日数計算-休日を考慮することもできる
  • 指定日数後のDate,Calendar,longを求める-休日を考慮することもできる
  • 二つの日付の間のリストを求める-休日を考慮することもできる
  • 指定日数までのリストを求める-休日を考慮することもできる
  • 曜日取得
  • Stringへの変換-SimpleDateFormatを使うもの
  • Stringへの変換
  • Stringからの変換
  • 存在性チェック

現在日時の取得

ArDateUtil.java
  /** 現在時刻Dateを取得する. */
  public static Date getCurrentDate() 
  /** 現在時刻のCalendarを取得する. */
  public static Calendar getCurrentCalendar() 
  /** 現在時刻のlongを取得する. */
  public static long getCurrentTime() 
  /** 現在日の和暦を取得する */
  public static ArWareki getCurrentWareki() 

指定日時の取得

ArDateUtil.java
  /** 指定日時のDateを取得する. */
  public static Date getDate(int year,int month,int day,int hour,int minute,int second) 
  /** 指定日時のCalendarを取得する. */
  public static Calendar getCalendar(int year,int month,int day,int hour,int minute,int second) 
  /** 指定日時のlongを取得する. */
  public static long getCurrentTime(int year,int month,int day,int hour,int minute,int second) 

Date⇔Calendarのコピー

ArDateUtil.java
  /** Dateをコピーする */
  public static Date copy(Date date) 
  /** Calendarをコピーする */
  public static Calendar copy(Calendar cal) {
  /** java.util.Dateをjava.util.Calendarに変換する. */
  public static Calendar dateToCalendar(java.util.Date date) 
  /** java.util.Calendarをjava.util.Dateに変換する. */
  public static Date calendarToDate(java.util.Calendar cal) 

時刻の切り上げ、切り下げ

ArDateUtil.java
  /** 当日の零時零分零秒にする. */
  public static java.util.Date downTo0H0M0S(java.util.Date date) 
  /** 当日の零時零分零秒にする. */
  public static java.util.Calendar downTo0H0M0S(java.util.Calendar cal) 
  /** 当日の零時零分零秒にする. */
  public static long downTo0H0M0S(long time) 
  /** 翌日の零時零分零秒にする. */
  public static java.util.Date upTo0H0M0S(java.util.Date date) {
  /** 翌日の零時零分零秒にする. */
  public static java.util.Calendar upTo0H0M0S(java.util.Calendar cal) 
  /** 翌日の零時零分零秒にする. */
  public static long upTo0H0M0S(long time) 
  /** 時間を切り下げる */
  public static java.util.Date downTo0M0S(java.util.Date date) 
  /** 時間を切り下げる */
  public static java.util.Calendar downTo0M0S(java.util.Calendar cal) 
  /** 時間を切り下げる */
  public static long downTo0M0S(long time) 
  /** 時間を切り上げる */
  public static java.util.Date upTo0M0S(java.util.Date date) 
  /** 時間を切り上げる */
  public static java.util.Calendar upTo0M0S(java.util.Calendar cal) 
  /** 時間を切り上げる */
  public static long upTo0M0S(long time) 

時刻を進める、遅らせる

ArDateUtil.java
  /** 時刻を進める.元のdateは変更されない. */
  public static Date forward(Date date,int day,int hour,int minute,int second) 
  /** 時刻を遅らせる.元のdateは変更されない. */
  public static Date backward(Date date,int day,int hour,int minute,int second) 
  /** 時刻を進める.元のcalは変更されない. */
  public static Calendar forward(Calendar cal,int day,int hour,int minute,int second) 
  /** 時刻を遅らせる.元のcalは変更されない. */
  public static Calendar backward(Calendar cal,int day,int hour,int minute,int second) 
  /** 時刻を進める. */
  public static long forward(long time,int day,int hour,int minute,int second) 
  /** 時刻を遅らせる. */
  public static long backward(long time,int day,int hour,int minute,int second) 

同一日判定-時刻が違っても同一日と判定する

ArDateUtil.java
  /** 同一日判定(時刻は違ってもOK) ArDate vs ArDate */
  public static boolean sameDate(ArDate arDate0,ArDate arDate1) 
  /** 同一日判定(時刻は違ってもOK) ArDate vs Date */
  public static boolean sameDate(ArDate arDate0,Date date) 
  /** 同一日判定(時刻は違ってもOK) ArDate vs Calendar */
  public static boolean sameDate(ArDate arDate0,Calendar cal) 
  /** 同一日判定(時刻は違ってもOK) ArDate vs long */
  public static boolean sameDate(ArDate arDate0,long time) 
  /** 同一日判定(時刻は違ってもOK) ArDate vs ArWareki */
  public static boolean sameDate(ArDate arDate0,ArWareki wareki) 
  /** 同一日判定(時刻は違ってもOK) Date vs ArDate */
  public static boolean sameDate(Date date0,ArDate arDate1) 
  /** 同一日判定(時刻は違ってもOK) Date vs Date */
  public static boolean sameDate(Date date0,Date date1) 
  /** 同一日判定(時刻は違ってもOK) Date vs Calednar */
  public static boolean sameDate(Date date,Calendar cal) 
  /**同一日判定(時刻は違ってもOK) Date vs long */
  public static boolean sameDate(Date date,long time) 
  /**同一日判定(時刻は違ってもOK) Date vs ArWareki */
  public static boolean sameDate(Date date,ArWareki wareki) 
  /** 同一日判定(時刻は違ってもOK) Calendar vs ArDate */
  public static boolean sameDate(Calendar cal0,ArDate arDate1) 
  /** 同一日判定(時刻は違ってもOK) Calendar vs Date */
  public static boolean sameDate(Calendar cal0,Date date1) 
  /** 同一日判定(時刻は違ってもOK) Calendar vs Calendar */
  public static boolean sameDate(Calendar cal0,Calendar cal1) 
  /** 同一日判定(時刻は違ってもOK) Calendar vs long */
  public static boolean sameDate(Calendar cal,long time) 
  /** 同一日判定(時刻は違ってもOK) Calendar vs ArWareki */
  public static boolean sameDate(Calendar cal,ArWareki wareki) 
  /** 同一日判定(時刻は違ってもOK) long vs ArDate */
  public static boolean sameDate(long time0,ArDate arDate1) 
  /** 同一日判定(時刻は違ってもOK) long vs Date */
  public static boolean sameDate(long time0,Date date1) 
  /** 同一日判定(時刻は違ってもOK) long vs Calendar */
  public static boolean sameDate(long time0,Calendar cal1) 
  /** 同一日判定(時刻は違ってもOK) long vs long */
  public static boolean sameDate(long time0,long time1) 
  /** 同一日判定(時刻は違ってもOK) long vs ArWareki */
  public static boolean sameDate(long time0,ArWareki wareki) 
  /** 同一日判定(時刻は違ってもOK) ArWareki vs ArDate */
  public static boolean sameDate(ArWareki wareki0,ArDate arDate1) 
  /** 同一日判定(時刻は違ってもOK) ArWareki vs Date */
  public static boolean sameDate(ArWareki wareki0,Date date1) 
  /** 同一日判定(時刻は違ってもOK) ArWareki vs Calendar */
  public static boolean sameDate(ArWareki wareki0,Calendar cal1) 
  /** 同一日判定(時刻は違ってもOK) ArWareki vs long */
  public static boolean sameDate(ArWareki wareki0,long time1) 
  /** 同一日判定(時刻は違ってもOK) ArWareki vs ArWareki */
  public static boolean sameDate(ArWareki wareki0,ArWareki wareki1) 

現在時刻判定-誤差指定

ArDateUtil.java
  /** 現在時刻判定-誤差(分)指定-Date */
  public static boolean currentTime(Date date,int min) 
  /** 現在時刻判定-誤差(分)指定-Calendar */
  public static boolean currentTime(Calendar cal,int min) 
  /** 現在時刻判定-誤差(分)指定-long */
  public static boolean currentTime(long time,int min) 

同一時刻判定-誤差指定

ArDateUtil.java
  /** 同一時刻判定-誤差(分)指定-Date vs Date */
  public static boolean sameTime(Date date0,Date date1,int min) 
  /** 同一時刻判定-誤差(分)指定-Date vs Calendar */
  public static boolean sameTime(Date date0,Calendar cal1,int min) 
  /** 同一時刻判定-誤差(分)指定-Date vs long */
  public static boolean sameTime(Date date0,long time1,int min) 
  /** 同一時刻判定-誤差(分)指定-Calendar vs Date */
  public static boolean sameTime(Calendar cal0,Date date1,int min) 
  /** 同一時刻判定-誤差(分)指定-Calendar vs Calendar */
  public static boolean sameTime(Calendar cal0,Calendar cal1,int min) 
  /** 同一時刻判定-誤差(分)指定-Calendar vs long */
  public static boolean sameTime(Calendar cal0,long time1,int min) 
  /** 同一時刻判定-誤差(分)指定-long vs Date */
  public static boolean sameTime(long time0,Date date1,int min) 
  /** 同一時刻判定-誤差(分)指定-long vs Calendar */
  public static boolean sameTime(long time0,Calendar cal1,int min) 
  /** 同一時刻判定-誤差(分)指定-long vs long */
  public static boolean sameTime(long time0,long time1,int min) 

日数計算-休日を考慮することもできる

ArDateUtil.java
  /** 二つのDateの日数を計算する. */
  public static int days(Date from,Date to) 
  /** 二つのDateの日数を計算する.休日を考慮 */
  public static int days(Date from,Date to,ArHoliday holiday) 
  /** 二つのCalendarの日数を計算する. */
  public static int days(Calendar from,Calendar to) 
  /** 二つのCalendarの日数を計算する.休日を考慮 */
  public static int days(Calendar from,Calendar to,ArHoliday holiday) 
  /** 二つのlongの日数を計算する. */
  public static int days(long from,long to) 
  /** 二つのlongの日数を計算する.休日を考慮 */
  public static int days(long from,long to,ArHoliday holiday) 

指定日数後のDate,Calendar,longを求める-休日を考慮することもできる

ArDateUtil.java
  /** days後のDateを求める.時分秒は保持される. */
  public static Date days(Date from,int days) 
  /** days後のDateを求める.休日を考慮.時分秒は保持される. */
  public static Date days(Date from,int days,ArHoliday holiday) 
  /** days後のCalendarを求める.時分秒は保持される. */
  public static Calendar days(Calendar from,int days) 
  /** days後のCalendarを求める.休日を考慮.時分秒は保持される. */
  public static Calendar days(Calendar from,int days,ArHoliday holiday) 
  /** days後のlongを求める.時分秒は保持される. */
  public static long days(long from,int days) 
  /** days後のlongを求める.休日を考慮.時分秒は保持される. */
  public static long days(long from,int days,ArHoliday holiday) 

二つの日付の間のリストを求める-休日を考慮することもできる

ArDateUtil.java
  /** 二つの日付の間のリストを求める */
  public static List<ArDate> dateList(ArDate from,ArDate to) 
  /** 二つの日付の間のリストを求める-休日を考慮 */
  public static List<ArDate> dateList(ArDate from,ArDate to,ArHoliday holiday) 
  /** 二つの日付の間のリストを求める-時分秒はfromと同一 */
  public static List<Date> dateList(Date from,Date to) 
  /** 二つの日付の間のリストを求める-休日を考慮-時分秒はfromと同一 */
  public static List<Date> dateList(Date from,Date to,ArHoliday holiday) 
  /** 二つの日付の間のリストを求める-時分秒はfromと同一 */
  public static List<Calendar> dateList(Calendar from,Calendar to) 
  /** 二つの日付の間のリストを求める-休日を考慮-時分秒はfromと同一 */
  public static List<Calendar> dateList(Calendar from,Calendar to,ArHoliday holiday) 
  /** 二つの日付の間のリストを求める-時分秒はfromと同一 */
  public static List<Long> dateList(long from,long to) 
  /** 二つの日付の間のリストを求める-休日を考慮-時分秒はfromと同一 */
  public static List<Long> dateList(long from,long to,ArHoliday holiday) 

指定日数までのリストを求める-休日を考慮することもできる

ArDateUtil.java
  /** from(含む)からdays日のDateのリストを戻す.リストのサイズはdays+1.時分秒は保持される. */
  public static List<Date> dateList(Date from,int days) 
  /** from(含む)からdays日のDateのリストを戻す.リストのサイズはdays+1.休日を考慮.時分秒は保持される. */
  public static List<Date> dateList(Date from,int days,ArHoliday holiday) 
  /** from(含む)からdays日のCalendarのリストを戻す.リストのサイズはdays+1.時分秒は保持される. */
  public static List<Calendar> dateList(Calendar from,int days) 
  /** from(含む)からdays日のCalendarのリストを戻す.リストのサイズはdays+1.休日を考慮.時分秒は保持される. */
  public static List<Calendar> dateList(Calendar from,int days,ArHoliday holiday) 
  /** from(含む)からdays日のlongのリストを戻す.リストのサイズはdays+1.時分秒は保持される. */
  public static List<Long> dateList(long from,int days) 
  /** from(含む)からdays日のlongのリストを戻す.リストのサイズはdays+1.休日を考慮.時分秒は保持される. */
  public static List<Long> dateList(long from,int days,ArHoliday holiday) 

曜日取得

ArDateUtil.java
  /** 曜日を取得する. */
  public static ArYoubi getYoubi(ArDate arDate) 
  /** 曜日を取得する. */
  public static ArYoubi getYoubi(Date date) 
  /** 曜日を取得する. */
  public static ArYoubi getYoubi(Calendar cal) 
  /** 曜日を取得する. */
  public static ArYoubi getYoubi(long time) 
  /** 曜日を取得する. */
  public static ArYoubi getYoubi(ArWareki wareki) 

Stringへの変換-SimpleDateFormatを使うもの

ArDateUtil.java
  /**  ${DATExxxx}を現在日時で置換する. xxxxはSimpleDateFormatで扱う形式.  */
  public static String replaceByDate(String str) 
  /**  ${DATExxxx}を日時などで置換する.  xxxxはSimpleDateFormatで扱う形式. */
  public static String replaceByDate(String str,ArDate date) 
  /**  ${DATExxxx}を日時などで置換する. xxxxはSimpleDateFormatで扱う形式.  */
  public static String replaceByDate(String str,java.util.Calendar cal) 
  /** ${DATExxxx}を日時などで置換する. xxxxはSimpleDateFormatで扱う形式.  */
  public static String replaceByDate(String str,long time) 
  /** ${DATExxxx}を日時などで置換する.<br>xxxxはSimpleDateFormatで扱う形式<br> */
  public static String replaceByDate(String str,java.util.Date date) 

Stringへの変換

ArDateUtil.java
  /** ArDateを日時に変換する. */
  public static String toString(ArDate date) 
  /** longを日時に変換する. */
  public static String toString(long time) 
  /** java.util.Dateを日時に変換する. */
  public static String toString(java.util.Date utilDate) 
  /** java.util.Calendarを日時に変換する. */
  public static String toString(java.util.Calendar cal) 

Stringからの変換

ArDateUtil.java
  /**
   *  Stringをjava.util.Dateに変換する.
   *  対象文字列の形式はArDateFormatsとArTimeFormatsに定義してあるもの.
   */
  public static java.util.Date toDate(String str) 
  /**
   *  Stringをjava.util.Calendarに変換する.
   *  対象文字列の形式はArDateFormatsとArTimeFormatsに定義してあるもの.
   */
  public static Calendar toCalendar(String str) 
  /**
   *  Stringをlongに変換する.
   *  対象文字列の形式はArDateFormatsとArTimeFormatsに定義してあるもの.
   */
  public static Long toLong(String str) 

存在性チェック

ArDateUtil.java
  /** 時刻の存在性をチェックする. */
  public static boolean isValidTime(int hour,int minite,int second) 
  /** 日付の存在性をチェックする.1900~2100 */
  public static boolean isValidDate(int year,int month,int date) 
  /** 日時の存在性をチェックする. */
  public static boolean isValidDateTime(int year,int month,int date,int hour,int minite,int second) 

##ArYoubi-曜日のenum

###概要

  • 現在曜日の取得、次の曜日の取得
  • int値との相互変換、変換値のカスタマイズ
  • String値との相互変換、日/英および長形式/短形式

###現在曜日の取得、次の曜日の取得

ArYoubi.java
  /** 現在曜日を求める. */
  public static ArYoubi getCurrentYoubi() 
  /** 次の曜日を求める. */
  public ArYoubi next() 

###int値との相互変換、変換値のカスタマイズ

  • 変換のデフォルト値はArYoubiIntに設定されている
  • intConversionに値を設定すれば、それにもとづいて変換される
ArYoubi.java
  /**
   *  intから曜日に変換する.
   *  正しくない値の時はnullを戻す.
   *  intConversionを設定していれば、それにもとづいて変換する.
   */
  public static ArYoubi fromInt(int youbi) 
  /** 曜日を整数に変換する. */
  public int toInt() 

###String値との相互変換、日/英および長形式/短形式

  • 短形式は日やSunなど
  • 長形式は日曜日やSundayなど
ArYoubi.java
  /**
   *  文字列に変換する.
   *  langは言語の指定.LangのJAPANESEまたはENGLISHを指定する.
   *  longthは短縮形か長い形かの指定.LengthのLONGまたはSHORTを指定する.
   *  bracketで指定された括弧で前後を囲む.CharDefのBRACKETxを指定することを想定.nullを指定すれば囲まない.
   */
  public String toString(int lang,int length,String[] bracket) 
  /** 日本語短形を戻す. */
  public String toJShortString() 
  /**
   *  日本語単形からYoubiに変換する.
   *  合致しない場合はnullを戻す.
   */
  public static ArYoubi fromJShortString(String str) 
  /** 日本語の長形を戻す. */
  public String toJLongString() 
  /**
   *  日本語長形からYoubiに変換する.
   *  合致しない場合はnullを戻す.
   */
  public static ArYoubi fromJLongString(String str) 
  /** 英語の短形を戻す. */
  public String toEShortString() 
  /**
   *  英語単形からYoubiに変換する.
   *  合致しない場合はnullを戻す.
   */
  public static ArYoubi fromEShortString(String str) 
  /** 英語の長形を戻す. */
  public String toELongString() 
  /**
   *  英語長形からYoubiに変換する.
   *  合致しない場合はnullを戻す.
   */
  public static ArYoubi fromELongString(String str) 

##ArHoliday-休日処理のインターフェース(実装クラスも提供)

###概要

  • ArHoliday-休日処理のインターフェース
  • ArHolidayInfo-休日情報のクラス
  • ArHolidayの各種実装クラス
  • ArHolidayStandard-他のArHoliday実装クラスを組み合わせる

ArHoliday-休日処理のインターフェース

ArHoliday.java
package jp.avaj.lib.algo;

import java.util.List;

/** 休日判定処理のインターフェース */
public interface ArHoliday {
  /**
   *  休日情報を取得する.
   *  休日の時⇒HolidayInfo.isHolidayがtrue.
   *  稼働日の時⇒HolidayInfo.isHolidayがfalse.
   *  判断できない時⇒返値がnull.
   */
  public ArHolidayInfo get(ArDate date);
  /**
   *  当該年月の休日情報を取得する.
   *  休日と稼働日の情報が取得される.
   *  判断できない日は含まれない.
   */
  public List<ArHolidayInfo> get(int year,int month);
  /**
   *  当該年の休日情報を取得する.
   *  休日と稼働日の情報が取得される.
   *  判断できない日は含まれない.
   */
  public List<ArHolidayInfo> get(int year);

}

ArHolidayInfo-休日情報のクラス

ArHolidayInfo.java
package jp.avaj.lib.algo;

/** 休日情報 */
public class ArHolidayInfo {
  /** 日付. */
  public ArDate date;
  /** 休日?. */
  public Boolean isHoliday;
  /** 説明. */
  public String descr;
}

ArHolidayの各種実装クラス

実装クラスは自分で作ることができるが、Arteryライブラリでは以下のものを提供している。

  • ArHolidayAll-すべて休日
  • ArHolidayNone-すべて稼働日
  • ArHolidayYoubi-曜日指定で休日
  • ArHolidayNthDayOfMonth-月の特定日が休日
  • ArHolidayNotNthDayOfMonth-月の特定日が稼働日
  • ArHolidayNthYoubi-月の第n曜日が休日
  • ArHolidayNotNthYoubi-月の第n曜日が稼働日
  • ArHolidayNthDayOfYear-年の特定日が休日
  • ArHolidayNotNthDayOfYear-年の特定日が稼働日
  • ArHolidayYyyyMmDd-指定日が休日
  • ArHolidayNotYyyyMmDd-指定日が稼働日
  • ArHolidayJapan-日本の祝日
  • ArHolidayStandard-他の実装クラスを組み合わせる

ArHolidayStandard-他のArHoliday実装クラスを組み合わせる

  • 他の実装クラスを組み合わせて複雑な休日/稼働日の条件を実現する
  • 指定されたクラスを順番に調べていく
  • 決定できない場合は、次のクラスを調べる

##ArWareki-和暦処理

  • 明治6年1月1日以降に対応
  • 現在日のArWarekiを生成
  • ArWarekiのコビー
  • ArDate,Date,Calendar,longからArWarekiを生成
  • ArWarekiからArDate,Date,Calendar,longを生成(時分秒は0)
  • ArWarekiから曜日を取得
  • ArWarekiとArDate,Date,Calendar,longとの同一日判定

### 参考:和暦と西暦の対応

  • 明治 6年 1月 1日 ⇔ 1873年 1月 1日.
  • 大正 1年 7月30日 ⇔ 1912年 7月30日.
  • 昭和 1年12月25日 ⇔ 1926年12月25日.
  • 平成 1年 1月 8日 ⇔ 1989年 1月 8日.
  • 令和 1年 5月 1日 ⇒ 2019年 5月 1日.

注、明治5年まではユリウス暦となっており、西暦と月日が一致しない.

現在日のArWarekiを生成

ArWareki.java
  /** 現在日の和暦を生成する */
  public static ArWareki construct() 

ArWarekiのコビー

ArWareki.java
  /** コンストラクタ */
  public ArWareki(ArWareki wareki)

ArDate,Date,Calendar,longからArWarekiを生成

ArWareki.java
  /** 西暦から和暦に変換する. */
  public static ArWareki fromArDate(ArDate date) 
  /** java.util.Dateから和暦に変換する. */
  public static ArWareki fromDate(java.util.Date utilDate) 
  /** java.util.Calendarから和暦に変換する. */
  public static ArWareki fromCalendar(java.util.Calendar cal) 
  /** longから和暦に変換する. */
  public static ArWareki fromLong(long time) 

ArWarekiからArDate,Date,Calendar,longを生成(時分秒は0)

ArWareki.java
  /** 和暦から西暦に変換する. */
  public ArDate toArDate() 
  /** 和暦からjava.util.Date(0時0分0秒)に変換する. */
  public static java.util.Date toDate(ArWareki wareki) 
  /** 和暦からjava.util.Calendar(0時0分0秒)に変換する. */
  public static java.util.Calendar toCalendar(ArWareki wareki) 
  /** 和暦からlong(0時0分0秒)に変換する. */
  public static long toLong(ArWareki wareki) 

ArWarekiから曜日を取得

ArWareki.java
  /** 曜日取得 */
  public ArYoubi getYoubi() 

ArWarekiとArDate,Date,Calendar,longとの同一日判定

ArWareki.java
  /** 同一日判定(ArWareki) */
  public boolean sameDate(ArWareki wareki) 
  /** 同一日判定(ArDate) */
  public boolean sameDate(ArDate arDate) 
  /** 同一日判定(Date) */
  public boolean sameDate(Date date) 
  /** 同一日判定(Calednar) */
  public boolean sameDate(Calendar cal) 
  /** 同一日判定(long) */
  public boolean sameDate(long time) 

#その他/インターフェース

###概要

  • ArComparator - Comparatorのダミーインターフェース
  • ArIterator - Iteratorのダミーインターフェース
  • ArGenerator
  • ArRandomFrom
  • ArStateable,ArStateMachine - 状態マシンのインターフェース
  • ArValueConverter

#その他/クラス

#その他/列挙型

#Bean間の値のコピー()

・画面⇔ビジネスロジック⇔DBの間の処理で値のコピーが多出する。ここでは次のような問題がある。
 ・フィールドの名称が異なる。
 ・フィールドのタイプが異なる。
 ・同じタイプのフィールドでも、値の意味が異なる。例、(男性:0,女性:1)⇒(男性:1,女性2)。
 ・コピーしたくないフィールドがある。
 ・そのような処理を個別に記述していくと、手法がバラバラになり、バグが入りやすくなる。
 ・また同じような処理がいろいろなところに記述される。
 ・できるだけ共通化・部品化して品質を上げることが望ましい。

ArAutoValueConverterの使用例(フィールドタイプの変換)
・[ArValueConverter(の実装クラス)の使用例-オブジェクトを別のオブジェクトに変換・逆変換する]
・[同じ名称のフィールドのコピー(フィールドタイプの変換-ArAutoValueConverterの使用)]
・[Bean間のコピー-違う名称のフィールドのコピー(変換情報を指定しArValueConverterで変換する)]
・(番外だけど)[Beanに作成者・作成日時、更新者・更新日時の設定を行う]

#グラフ処理()

###関連クラス
・ArGraphPointType ⇒ ポイントの種類の定義(スタート/エンド/スタート&エンド/通過)
・ArGraphEdge ⇒ エッジ
・ArGraphEdgeDir ⇒ エッジの方向(双方向/一方向/意味なし)
・ArGraphConnection ⇒ ポイントの接続情報(接続先と接続元)
・ArGraph ⇒ 処理ロジック

###ArGraphのメソッド

ArGraph.java
  /** トポロジカルソートを行う.ループしている場合はnullが戻される */
  public static <$Point> List<$Point> topologicalSort(Collection<ArGraphEdge<$Point>> edges)
  /**
   *  非連結のグラフを分割する.連結グラフであれば一つだけグラフが戻される
   *  @param pontMap ポイント情報、事前にgetAllPointsで求めること.
   */
  public static <$Point> List<Map<$Point,ArGraphConnection<$Point>>> divide(Collection<ArGraphEdge<$Point>> edges) {
  /**
   *  非連結のグラフを分割する.連結グラフであれば一つだけグラフが戻される
   *  @param pontMap ポイント情報、事前にgetAllPointsで求めること.
   */
  public static <$Point> List<Map<$Point,ArGraphConnection<$Point>>> divide(Map<$Point,ArGraphConnection<$Point>> pointMap)
  /**
   *  指定ポイント間の経路を求める.
   *  @param pontMap ポイント情報、事前にgetAllPointsで求めること.
   *  @param targetPoints 通過ポイント,[0]:出発地、[n-1]:目的地
   */
  public static <$Point> List<List<$Point>> findRoute(Collection<ArGraphEdge<$Point>> edges,$Point[] targetPoints)
  /**
   *  指定ポイント間の経路を求める.
   *  @param pontMap ポイント情報、事前にgetAllPointsで求めること.
   *  @param targetPoints 通過ポイント,[0]:出発地、[n-1]:目的地
   */
  public static <$Point> List<List<$Point>> findRoute(Map<$Point,ArGraphConnection<$Point>> pointMap,$Point[] targetPoints) 
  /**
   *  閉路であるか否かを判定する.
   *  @return trueであれば閉路、ただし複数の閉路かもしれない.
   */
  public static <$Point> boolean closed(Collection<ArGraphEdge<$Point>> edges) 
  /** 始点ポイント情報を求める.始点・終点を兼ねるものも含む.存在しないときはゼロサイズ. */
  public static <$Point> Map<$Point,ArGraphConnection<$Point>> getStartPoints(Collection<ArGraphEdge<$Point>> edges) {
  /** 終点ポイント情報を求める.始点・終点を兼ねるものも含む.存在しないときはゼロサイズ. */
  public static <$Point> Map<$Point,ArGraphConnection<$Point>> getEndPoints(Collection<ArGraphEdge<$Point>> edges) 
  /** 始点終点ポイント情報を求める.存在しないときはゼロサイズ */
  public static <$Point> Map<$Point,ArGraphConnection<$Point>> getStartEndPoints(Collection<ArGraphEdge<$Point>> edges) 
  /** すべてのポイント情報を取得する */
  public static <$Point> Map<$Point,ArGraphConnection<$Point>> getAllPoints(Collection<ArGraphEdge<$Point>> edges)

サンプル

グラフ処理(鉄道路線)-閉路判定/始点終点検索/路線分割/トポロジカルソート/駅間経路検索

#種々雑多(08)

###組合せ(Combination)

組合せ(ArCombination)の生成(Q08_00)

###状態マシン

状態マシンのサンプル(Q08_01)

###数値配列の処理

数値配列の処理-集約(最大値、最小値、合計、平均、標準偏差)、変換(移動平均、変化率など)、ヒストグラムなど

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?