今日の記録3 主に java
sourceコマンドとは
ファイルに書かれたコマンドを現在のシェルで実行する。
シェルの設定ファイル(環境設定等)の内容をログインし直さず、即座に反映させたい時に役立つ。
Java
unmodifiableList
呼び出し元でaddやremoveが出来なくなる。読み取り専用となる。
Javaオーバーライド
戻り値の変更もオーバーライドで出来ると思ったけどできなかった。
オーバーライドする側とオーバーライドされる側の戻り値の型、メソッド名、引数の型、引数の数、引数の並び順が同じであること。
http://www.techscore.com/tech/Java/JavaIntro/7/
Map
MapのentrySetとkeySet
keySetはkeyの情報だけを必要とする場合に、
entrySetはkeyとvalue両方を必要とする場合に
それぞれ使い分ける。
補足: エントリ(キーと値のペア)
サンプルコード: キーと値両方取り出したい場合
map.entrySet().stream().forEach(e -> System.out.println(e.getKey()+e.getValue())
サンプルコード: キーだけを取り出したい場合
map.keySet().stream().forEach(System.out::println);
サンプルコード:値だけを取り出したい場合
map.entrySet().stream().map(Map.Entry::getValue).forEach(System.out::println);
ストリームからコレクションや配列などを生成する方法
例:7文字のキーのみををリストに変換
List<String>list=
map.keySet().stream().filter(e->e.matches("\\w{7}")).collect(Collectors.toList());
様々な型変換のやり方はp258を参考にする
多次元配列をループを使わずにプリントする方法
参考サイト:https://teratail.com/questions/102877
4×13のtable配列が宣言されていたとする。
各要素はトランプの絵柄に対応して順に数字が入っている。
Card[][] table = new Card[Card.SUIT_NUM][Card.CARD_NUM];
table[0][1] = new Card(1, 2);
table[1][4] = new Card(2, 5);
table[2][5] = new Card(3, 6);
List<Card[]> cards = Arrays.asList(table);
cards.stream().map(Arrays::toString).forEach(System.out::println);
// Arrays.deepToStringでも出来る
// System.out.print(Arrays.deepToString(table).replaceAll("],",
// System.lineSeparator()).replaceAll("null", ".."));
//必要に応じて、replaceAllで文字を置換する
出力結果
[null, S2, null, null, null, null, null, null, null, null, null, null, null]
[null, null, null, null, D5, null, null, null, null, null, null, null, null]
[null, null, null, null, null, C6, null, null, null, null, null, null, null]
[null, null, null, null, null, null, null, null, null, null, null, null, null]
解説:
cards.stream().map(Arrays::toString).forEach(System.out::println);
map: 各要素の変換(各要素を倍にする等)
:: : ダブルコロンはメソッド参照 と呼ばれる。
クラスメソッドやインスタンスメソッドをLambdaの実装として利用することが出来る。
並列処理のオーバーヘッド
並列化処理をすると早くなると言われているが、オーバーヘッドの可能性もあるため、逆に遅くなることもある。
並列化オーバーヘッドについての参考サイト
http://web.yl.is.s.u-tokyo.ac.jp/pl/abclf/ipa-final/reports/html/5/6/node23.html
実装テクニック
Javaは参照渡しなので、読み取りだけを目的としたメソッド(特にget)の実装は注意する。
Listをgetするのであれば、unmodifiableListを使う
Author And Source
この問題について(今日の記録3 主に java), 我々は、より多くの情報をここで見つけました https://qiita.com/AykeJq0ILeYFOR4/items/184c94948873d4c0c6cf著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .