collect() と Collectors

終端操作の一つであるcollect()メソッドを使用した処理。 ストリームの要素をまとめて一つにする際に使用する。 collect()メソッドにはCollectorを引数に持たせるが、 汎用的なCollectorはCollectorsクラスによって提供されている。 以下、Collectorsのメソ…

メソッドを読みやすく

なんとなく。 読みやすさの定義はいろいろあると思うがふと思いついたので。 例えばこのような信号を表すクラスとそれに伴う挙動をenumで定義する。 使うクラスとか(これは準備) static class Signal { boolean isBroken; Color color; public boolean col…

Map(Java8)

今更だけど復習の意味で。 意外と把握していないメソッドがいろいろ追加されていたので。 //データ準備 Map<Integer, String> map = new HashMap<>(); map.put(1, "one"); map.put(2, "two"); map.put(3, "three"); getOrDefault 従来の取得メソッド(get)に存在しない場合の</integer,>…

Stream の評価順

Streamの評価順序は、要素ひとつひとつに対して連続して行われる。 また、終端処理が実行されるまでは中間処理は実行されない。 public static void main(String[] args) { Stream<String> stream = Stream.of("banana", "apple", "orange") .filter(lengthFilter) .</string>…

JDBCいろいろ

接続 //接続先URL String url = "jdbc:mysql://localhost:3306/study?autoReconnect=true&useSSL=false&serverTimezone=UTC"; //ユーザ名 String user = "root"; //パスワード String pass = "root"; //接続する //JavaSE7よりtry-with-resourcesが使えるよ…

並行処理いろいろ

Runnableを使用した場合 //Runnableオブジェクトを生成する Runnable r = () -> { System.out.println("Task is executed."); System.out.println("end"); }; //Executorを使用して実行 ExecutorService executor = Executors.newSingleThreadExecutor(); ex…

Java Date and Time API

Java Date and Time APIについていろいろ //年月日日時 System.out.println(LocalDateTime.now()); //年月日 System.out.println(LocalDate.now()); //時間のみ System.out.println(LocalTime.now()); 結果 2018-05-04T11:36:00.778 2018-05-04 11:36:00.779…

標準入力からの値の読み込み

コーディング問題であるような、最初の1行に規定数、次の行にその数分の入力がスペース区切りであるようなやつ。 Scanner sc = new Scanner(System.in); //最初の1行(e.g. 4) int num = Integer.parseInt(sc.nextLine()); int[] numbers = new int[num]; //…

新しいシェルプログラミングの教科書

これ読み始めた 新しいシェルプログラミングの教科書作者: 三宅英明出版社/メーカー: SBクリエイティブ発売日: 2017/11/21メディア: Kindle版この商品を含むブログを見る

String#join

前回に引き続き、文字列の連結。 //String#joinメソッド。第一引数に区切り文字 //文字列連結 String joined = String.join(",", "a", "b", "c"); System.out.println(joined); //String配列の要素の連結 String[] arr = {"aa", "bb", "cc"}; String arrJoin…

StringJoinerによる文字列連結

//StringJoinerのコンストラクタに区切り文字を渡す StringJoiner joiner = new StringJoiner(","); //StringJoinerに連結する文字列を追加していく joiner.add("one"); joiner.add("two"); joiner.add("three"); joiner.add("four"); //toStringを呼び出す …

ヌルオブジェクトの導入

リファクタリングより、「ヌルオブジェクトの導入」 このようなコードがあるとする public String getPersonName(Person person) { //NULL判定をして返却する値を変えている! if (person == null) { return "unknown"; } else { return person.getName(); }…

基礎からのshellscript

1.単純なshellsript #!/bin/bash echo hello 2.変数宣言と利用 name="tanaka" #変数を使用する場合($変数) echo "$name" #上記と同じ。変数名の後に何か続く場合は{}で囲む echo "${name}!" 3.特殊変数 #実行したシェルスクリプト echo $0 #実行したシェル…

ビルダーパターン

effectiveJava 2nd Editionより、 『数多くのコンストラクタパラメータに直面した時にはビルダーを検討する』 /** * No2.builder pattern * @author User * */ public class Person { private final int age; private final String name; private String cit…

Mockitoでできること

Junitで使用するMockitoでいろいろ実験。 Mockitoを使用することで、任意のメソッドの挙動(返り値や例外送出)を操作することができる。 本来のテスト対象でないメソッドなどを一定の動きに制約したい時などに使う。 使用する場合はJarをダウンロードするも…

PowerMock

mockitで実現できない(しづらい)staticメソッドやprivateメソッドのモック化をする PowerMockを使ってみる。 今回はひとまずstaticメソッド。 テスト対象クラス private StudyUtil() { } //本日日付をYYYYMMDDで返却する public static String getToday(){…

Java silver 勉強中

JavaSilver勉強中。今更感あるけど(笑) 黒本の章末、総仕上げ問題で不正解だったものを実際にコーディングして復習。 ①子クラスで継承したメソッドの可視性を厳しくすることはできない interface inter { //インターフェースで宣言したメソッドは暗黙的にp…

再帰処理

1. フィボナッチ数列 //再帰を使用した場合 static int fibonacci(int n) { if (n < 2) { return 1; } return fibonacci(n - 2) + fibonacci(n - 1); } //ループを使用した場合 static int fibonacci2(int n) { if (n < 2) { return 1; } int fibo1 = 1, fib…

for文の挙動について

javaのfor文の挙動について。 初歩レベルだけどあまり意識しないで使っていたことが判明。 更新処理って一番最後だったんですね。 public static void main(String[] args) { for (int i = initialize(); condition(i) ; update()) { System.out.println("ル…

Javaプログラマが2018年に学ぶべき10のこと

元ネタ:10 things Java Programmers Should Learn in 2018 と、いうわけでよく読むJavarevisitedというブログで気になる記事があったので。 一覧 Git Unit testing Java 8 , java 9 Spring Framework 5 RESTful Web Service Spring Security 5.0 Spring Boot…

java 正規表現

今更だけどjavaで正規表現。 今回は携帯電話番号の形式になっているかを調査する。 javaで正規表現を用いた入力値チェックをするときには ①String#matchesメソッドを使用 ②Patternクラス・Matherクラスを使用する の2通りが考えられるので1つずつ見ていく。 …

現場で役立つシステム設計の原則

これ読んでる。 現場で役立つシステム設計の原則 〜変更を楽で安全にするオブジェクト指向の実践技法作者: 増田亨出版社/メーカー: 技術評論社発売日: 2017/07/05メディア: Kindle版この商品を含むブログ (2件) を見る オブジェクト指向におけるよりよい設計…

Streamを使ったgroup化

まずは実際のソースコード。 今回は(ちょっと古いが)「このマンガがすごい」をオブジェクトにしてみた。 ComicRank cr1 = new ComicRank(2015, "こえのかたち", Genre.Men, 1); ComicRank cr2 = new ComicRank(2015, "魔法使いの嫁", Genre.Men, 2); Comic…

Streamを使った並び替え

とりあえずいつもの。(準備) Person p1 = new Person("abc", 30); Person p2 = new Person("def", 25); Person p3 = new Person("ghi", 17); Person p4 = new Person("jkl", 8); Person p5 = new Person("mno", 30); List<Person> list = new ArrayList<>(); list.</person>…

オブジェクトのリストをArrayList<ArrayList<String>>に変換する

オブジェクト(今回はPersonオブジェクト)のリストを Personオブジェクトのプロパティ文字列のリストに変換する。 (Personはnameとageのプロパティを持つ) public class ServiceClass { private int cnt; { cnt = 1; } public void hoge() { Person p1 = …

Enumで遊ぶ

javaのenumでいろいろやってみよう。 まず、enumに定数固有の数値を持たせる。 enum Nums { ZERO(0), ONE(1), TWO(2), THREE(3); int index; private Nums(int index) { this.index = index; } String get(List<String> list) { return list.get(this.index); } } こ</string>…

Python基礎いろいろ

さーて、本日はPythonの基本的な文法のまとめだよー! 1. Pythonは動的型付 a = 10 b = 'string' print(type(a)) print(type(b)) と、いうわけで、上記のように、変数の宣言時に型の宣言は必要ない。 (JavaではintとかStringとかで宣言してるよね。) 変数の…

Java 可変長引数の使い方

可変長引数は、同一の型の引数について、 呼び出し元から渡される引数の数が不定の場合に有用な方法である。 が、使用方法を誤るといろいろ面倒なことになるそうなので、以下にメモ。 とりあえず、使い方を書いてみる。 //渡された可変長引数の中から、最長…

Pythonいろいろメモ

1.文字列を配列にするにはlist()を使用する input = 'abcdef' array = list(input) print(array) →[‘a’,‘b’,‘c’,’d',‘e’,‘f’] 2.条件分岐 a = 10 if a == 10: print('10!') elif a < 10: print('under 10!') else : print('over 10!') こんな感じ。 Javaでは…

Java Streamで遊ぶ

Streamの大まかな流れ Stream化 → 中間処理(→中間処理→中間処理→・・) →終端処理 やってみる public static void main(String[] args) { List<Person> persons = new ArrayList<>(); Person taro = new Person("taro", 20); Person jiro = new Person("taro", 22);</person>…