Java8 Stream のテスト（工事中）

## 開発環境
Tools and Environment
STS (Spring Tool Suite) (version: 3.9.10.RELEASE)
Java (version: 1.8.0_221)

``` java:Test1
package test;

import java.util.List;
import java.util.stream.Collectors;

public class Test1 {
	public static String run(List<Person> persons) {
		
		String  result = persons.stream()
		.map(p -> p.getName())
		.collect(Collectors.joining("/"));
		
	    return result;
	}
}
```
``` java:Test2
package test;

import java.util.List;

public class Test2 {
	public static String run(List<Person> persons, StringBuffer wk) {
		
		wk.setLength(0);
		
        for(Person p : persons){
        	wk.append(p.getName()).append("/");
        }
        
        String result = "";
        if (wk.length() > 0) {
        	result = wk.substring(0, wk.length()-1);
        }
		
	    return result;
	}
}

```

``` java:Test3
package test;

import java.util.List;


public class Test3 {
	public static String run(List<Person> persons) {
		
		StringBuffer wk = new StringBuffer();
		
        for(Person p : persons){
        	wk.append(p.getName()).append("/");
        }
        
        String result = "";
        if (wk.length() > 0) {
        	result = wk.substring(0, wk.length()-1);
        }
		
	    return result;
	}
}
```

``` java:Person
package test;

public class Person {
	  private String  name;
	  private boolean maleFlag;
	  private int     age;

	  private String  str1;
	  private String  str2;
	  private String  str3;
	  private String  str4;
	  private String  str5;

	  
	  public String  getName() { return this.name; }
	  public boolean isMale()  { return this.maleFlag; }
	  public int     getAge()  { return this.age; }

	  public String getStr1() { return this.str1; }
	  public String getStr2() { return this.str2; }
	  public String getStr3() { return this.str3; }
	  public String getStr4() { return this.str4; }
	  public String getStr5() { return this.str5; }
	  
	  
	  
	  public Person(String name, boolean maleFlag, int age) {
	    this.name = name;
	    this.maleFlag = maleFlag;
	    this.age = age;
	    
	    this.str1 = "**********************************";
	    this.str2 = "**********************************";
	    this.str3 = "**********************************";
	    this.str4 = "**********************************";
	    this.str5 = "**********************************";
	  }
	}

```

``` java:Main
package test;
import java.util.Arrays;
import java.util.List;

import test.Test1;
import test.Test2;

public class main {

	public static void main(String[] args) {
		int loopCnt = 10000000; 
		
	    List<Person> presidents = Arrays.asList(
	    	      new Person("Richard Nixon", true, 56),
	    	      new Person("Gerald Ford", true, 61),
	    	      new Person("Jimmy Carter", true, 52),
	    	      new Person("Ronald Reagan", true, 69),
	    	      new Person("George Bush", true, 64),
	    	      new Person("Bill Clinton", true, 46),
	    	      new Person("George Bush", true, 54),
	    	      new Person("Barack Obama", true, 47)
	    	    );
	    
	    int testCnt = 3;
	    int j = 0;
		StringBuffer wk = new StringBuffer();
	    while (j < testCnt) {
		    System.out.println("Test1 "+ (j+1) + "回目");
		    long startTime = System.currentTimeMillis();
		    int i = 0;
		    while (i < loopCnt) {
		    	String result = Test1.run(presidents);
		    	// System.out.println(result);
		    	i++;
		    }
		    long endTime = System.currentTimeMillis();
		    
		    System.out.println("開始時刻：" + startTime + " ms");
		    System.out.println("終了時刻：" + endTime + " ms");
		    System.out.println("処理時間：" + (endTime - startTime) + " ms");
		 
		    
		    System.out.println("Test2 "+ (j+1) + "回目");
		    startTime = System.currentTimeMillis();
		    i = 0;
		    while (i < loopCnt) {
		    	String result = Test2.run(presidents, wk);
		    	// System.out.println(result);
		    	i++;
		    }
		    endTime = System.currentTimeMillis();
		    System.out.println("開始時刻：" + startTime + " ms");
		    System.out.println("終了時刻：" + endTime + " ms");
		    System.out.println("処理時間：" + (endTime - startTime) + " ms");
		
		    System.out.println("Test3 "+ (j+1) + "回目");
		    startTime = System.currentTimeMillis();
		    i = 0;
		    while (i < loopCnt) {
		    	String result = Test3.run(presidents);
		    	// System.out.println(result);
		    	i++;
		    }
		    endTime = System.currentTimeMillis();
		    System.out.println("開始時刻：" + startTime + " ms");
		    System.out.println("終了時刻：" + endTime + " ms");
		    System.out.println("処理時間：" + (endTime - startTime) + " ms");

		    j++;
	    }
	}
}

```

``` :実行結果
Test1 1回目
開始時刻：1573005609763 ms
終了時刻：1573005613141 ms
処理時間：3378 ms
Test2 1回目
開始時刻：1573005613141 ms
終了時刻：1573005616150 ms
処理時間：3009 ms
Test3 1回目
開始時刻：1573005616150 ms
終了時刻：1573005618141 ms
処理時間：1991 ms
Test1 2回目
開始時刻：1573005618142 ms
終了時刻：1573005621244 ms
処理時間：3102 ms
Test2 2回目
開始時刻：1573005621244 ms
終了時刻：1573005624254 ms
処理時間：3010 ms
Test3 2回目
開始時刻：1573005624255 ms
終了時刻：1573005626297 ms
処理時間：2042 ms
Test1 3回目
開始時刻：1573005626297 ms
終了時刻：1573005629413 ms
処理時間：3116 ms
Test2 3回目
開始時刻：1573005629413 ms
終了時刻：1573005632424 ms
処理時間：3011 ms
Test3 3回目
開始時刻：1573005632424 ms
終了時刻：1573005634482 ms
処理時間：2058 ms
```

``` :バッファサイズを256に設定
BufferSize：256
Test1 1回目
開始時刻：1573007367013 ms
終了時刻：1573007370171 ms
処理時間：3158 ms
Test2 1回目
開始時刻：1573007370171 ms
終了時刻：1573007373182 ms
処理時間：3011 ms
Test3 1回目
開始時刻：1573007373182 ms
終了時刻：1573007374940 ms
処理時間：1758 ms
Test1 2回目
開始時刻：1573007374940 ms
終了時刻：1573007377747 ms
処理時間：2807 ms
Test2 2回目
開始時刻：1573007377747 ms
終了時刻：1573007380747 ms
処理時間：3000 ms
Test3 2回目
開始時刻：1573007380747 ms
終了時刻：1573007382400 ms
処理時間：1653 ms
Test1 3回目
開始時刻：1573007382400 ms
終了時刻：1573007385217 ms
処理時間：2817 ms
Test2 3回目
開始時刻：1573007385217 ms
終了時刻：1573007388216 ms
処理時間：2999 ms
Test3 3回目
開始時刻：1573007388216 ms
終了時刻：1573007389903 ms
処理時間：1687 ms
```