μ€κ° νμ΄ν
.filter(Predicate)
.map(Function)
.sorted(Comparator)
.distinct()
μ΅μ’
νμ΄ν
.count()/max()/min()/average()sum()
.allMatch()/anyMatch()/noneMatch()
.forEach()
κ°λ°μμ μλ° μμ€λ₯Ό λ€λ₯Έ κ°λ°μμκ² μ ν΄μ€ λ
1. μμ€ μ체λ₯Ό μ€λ€ -> MyFile.java
2. μ»΄νμΌν μ€ν νμΌμ μ λ¬νλ€. -> MyFile.class -> μμΆ(1κ° νμΌλ‘) -> *.jar (-> μ΄λ¦μ λκ° νλ‘μ νΈ μ΄λ¦μ μλ¬Έμλ‘ μ¬μ©νλ€.) λ°μ μ¬λμ΄ μμ€λ₯Ό μμλ³Ό μ μλ€.
distinct()
μ€κ° νμ΄ν
μμ μ€νΈλ¦Όμμ μ€λ³΅ μμλ₯Ό μ κ±°νκ³ , μ μΌν μμλ§ λ¨μ μλ‘μ΄ μ€νΈλ¦Όμ λ°ννλ€.
νμ΄νλ€μ μμμ λ°λΌ μ λ¬λλ κ°μ΄ λ¬λΌμ§λ―λ‘ μ€κ° νμ΄νμ μμλ₯Ό μ μνμ¬ μ¬μ©ν΄μΌ νλ€.
λ°°μ΄μ Arraysλ₯Ό μ¬μ©νμ¬ streamμ μ»λλ€.
Collectionμ λ°λ‘ streamμ μ¬μ©νλ©΄ λλ€.
//μ€λ³΅κ° μ κ±°
List<Integer> list = Data.getIntList();
//Case 1. set μ¬μ©νκΈ°
Set<Integer> set1 = new HashSet<>();
for (int n : list) {
set1.add(n); // μ€λ³΅κ° μ κ±°
}
//Case 2. Listλ₯Ό SetμΌλ‘ λ£κΈ°
Set<Integer> set2 = new HashSet<>(list);
//Case 3. distinct() μ¬μ©νκΈ°
System.out.println(list.stream().distinct().count()); // μ€λ³΅κ° κ±Έλ¬μ€
// Set, distinct() > μ€λ³΅ κ°μ²΄λ₯Ό μ κ±°νλ €λ©΄?
// 1. hashCode() μ¬μ μ
// 2. equals() μ¬μ μ
List<String> list = Data.getStringList(10);
//String μμ Integerλ‘ νλ³ν
// λ¨μ΄μμ λ¨μ΄μ κΈμμλ‘ λ³κ²½λμλ€.
list.stream() // Stream<String>
.map(word -> word.length()) // Stream<Integer>
.forEach(n -> System.out.println(n));
Data.getIntList(10).stream()
.sorted((a, b) -> b - a)
.forEach(n -> System.out.println(n));
// μꡬμ¬ν] λ°°μ΄ > μ§μλ§ μλμ§?
int[] nums = { 1, 2, 3, 4, 5 };
System.out.println(Arrays.stream(nums).allMatch(n -> n % 2 == 0)); // λͺ¨λ μ§μ?
System.out.println(Arrays.stream(nums).anyMatch(n -> n % 2 == 0)); // νλλΌλ μ§μ?
System.out.println(Arrays.stream(nums).noneMatch(n -> n % 2 == 0)); // λͺ¨λ μ§μ μλ?
if (Arrays.stream(nums).allMatch(n -> n % 2 == 0)) {
System.out.println("μ§μ");
} else {
System.out.println("νμ");
}
System.out.println(Data.getIntList().stream().count());
System.out.println(Data.getIntList().stream().max((a, b) -> a - b).get()); // 99 -> intλ‘ λ³κ²½
System.out.println(Data.getIntList().stream().min((a, b) -> a - b).get()); // 0
// sum, avgλ μ«μμΌ λλ§ κ°λ₯
int sum = Data.getIntList().stream().mapToInt(n -> n) // Stream<Integer>(x) IntStream(O) -> generic stream to
// intstream
.sum();
System.out.println(sum);
double avg = Data.getIntList().stream().mapToInt(n -> n).average().getAsDouble();
System.out.println(avg);
a. "JavaTest > data > "member.txt" νμΌ μμ±νκΈ°
b. 1,νκΈΈλ,20, 010-1234-5678,μμΈμ κ°λ¨κ΅¬ μμΌλ > κ·μΉμΌλ‘ λ°μ΄ν°λ₯Ό λ§λ€ κ²μΌλ‘ νλ€.
c. μμ κ·μΉλλ‘ λ°μ΄ν°λ₯Ό μμ±νλ€.
-> λ°°μ΄μ νμν λ¨μ΄λ€μ νλμ© λ£κ³ , λμλ₯Ό μμ±ν΄ μμ±λ λμλ₯Ό μΈλ±μ€λ‘ μ κ·Όνμ¬ λ¬Έμλ₯Ό νλμ© λΆμΈ λ€ νμΌμ μ μ₯νλ€.
μμ
Random rnd = new Random();
String[] name1 = { "κΉ", "μ΄", "λ°", "μ΅", "μ ", "ν©", "μ ", "ν", "κΈΈ", "μ‘°" };
String[] name2 = { "μ", "ν", "μ", "μ ", "μ£Ό", "μ", "μ§", "λ―Ό", "μΈ", "μ§", "μ", "μ" };
String[] addr1 = { "μμΈμ", "μΈμ²μ", "λΆμ°μ", "μμμ", "λμ μ", "κ΄μ£Όμ", "μ μ£Όμ" };
String[] addr2 = { "μ€κ΅¬", "κ°λΆκ΅¬", "κ°λ¨κ΅¬", "κ°μꡬ", "κ°λꡬ" };
String[] addr3 = { "μμΌλ", "λμΉλ", "μꡬμ λ", "μ²νΈλ", "λ°©λ°°λ" };
BufferedWriter writer = new BufferedWriter(new FileWriter(".\\data\\member.txt"));
for (int i = 0; i < 100; i++) {
// νμ λ²νΈ
int no = i + 1;
// νμλͺ
String name = name1[rnd.nextInt(name1.length)] + name2[rnd.nextInt(name2.length)]
+ name2[rnd.nextInt(name2.length)];
// λμ΄(20~60)
int age = rnd.nextInt(41) + 20;
// μ°λ½μ²
String tel = "010-" + (rnd.nextInt(9000) + 1000) + "-" + (rnd.nextInt(9000) + 1000);
// μ£Όμ
String address = addr1[rnd.nextInt(addr1.length)] + " " + addr2[rnd.nextInt(addr2.length)] + " "
+ addr3[rnd.nextInt(addr3.length)] + " " + (rnd.nextInt(100) + 20) + "λ²μ§";
// System.out.println(address);
// b. 1,νκΈΈλ,20, 010-1234-5678,μμΈμ κ°λ¨κ΅¬ μμΌλ > κ·μΉ
writer.write(String.format("%d,%s,%d,%s,%s\r\n", no, name, age, tel, address));
}
writer.close();
System.out.println("λλ―Έ λ°μ΄ν° μμ± μλ£");
OpenAPI > λ°μ΄ν° ν보 > μ λΆ μ§μ§ λ°μ΄ν°
JSON νμΌμ μ½μ΄μ μνλ κ°μ²΄λ§ μ½κΈ°
/*
* { "name": "νκΈΈλ", "age": 20, "tel": ["010-1111-1111", "010-2222-2222",
* "010-3333-3333"] }
*
*/
String json = "{\r\n" + " \"name\": \"νκΈΈλ\",\r\n" + " \"age\": 20,\r\n"
+ " \"tel\": [\"010-1111-1111\", \"010-2222-2222\", \"010-3333-3333\"]\r\n" + " }";
JSONParser parser = new JSONParser();
try {
JSONObject obj = (JSONObject) parser.parse(json); // down casting
System.out.println(obj.get("name")); // property name = key
System.out.println(obj.get("age")); // property name = key
// array - JSONArray
JSONArray arr = (JSONArray) obj.get("tel"); // down casting
for (Object t : arr) {
System.out.println(t);
}
} catch (ParseException e) {
e.printStackTrace();
}
}
Open APIλ‘ μλ£ κ°μ Έμ€κΈ°
Scanner scan = new Scanner(System.in);
System.out.println("[μ§νμ² μ 보 κ²μ]");
System.out.print("μ κ²μ: ");
String name = scan.nextLine();
// 1. μμ² URL λ§λ€κΈ°
String url = "http://apis.data.go.kr/1613000/SubwayInfoService/getKwrdFndSubwaySttnList?"; // μμ²μ£Όμ
url += "ServiceKey=CyGDxLq3m558%2BnuTh5ZIGVs1ZsV%2FJYNhvoIKPq4gnApUrtPtRi8tUaWziDwY%2BCrYVF%2BimSzN7lTocuLE0kVDzQ%3D%3D";
url += "&_type=json"; // λλ € λ°λ λ°μ΄ν° = XML or JSON
url += "&numOfRows=10"; // λ°μ΄ν°λ₯Ό 10κ°μ© κ°μ Έμ€κΈ°
url += "&pageNo=1"; // 첫λ²μ§Έ 10κ° 1~10λ²μ§Έ λ°μ΄ν°. λ§μ½ 2λͺ
11~20λ²μ§Έλ°μ΄ν°μ
url += "&subwayStationName=" + URLEncoder.encode(name);
// QueryString - ? λ€μ κ°
// http:\\data.go.kr\SttnList?ν€=λ°μ΄ν°&ν€=λ°μ΄ν°&ν€=λ°μ΄ν°
// JSON
// κ°μ²΄ {}
// λ©€λ² "name":"νκΈΈλ"
// λ°°μ΄ []
// URL κ°μ²΄ μμ±
try {
// URL κ°μ²΄ μμ±
URL obj_url = new URL(url);
// URLκ³Ό μ°κ²°νλ κ°μ²΄ μμ± > λΈλΌμ°μ λμ μ μ
HttpURLConnection conn = (HttpURLConnection) obj_url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Content-type", "application/json");
BufferedReader reader = null;
if (conn.getResponseCode() >= 200 && conn.getResponseCode() <= 300) {
reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
} else {
reader = new BufferedReader(new InputStreamReader(conn.getErrorStream()));
}
JSONParser parser = new JSONParser();
JSONObject root = (JSONObject) parser.parse(reader); // νλ³ν κ³μ νκΈ°
JSONObject response = (JSONObject) root.get("response");
JSONObject body = (JSONObject) response.get("body");
JSONObject items = (JSONObject) body.get("items");
ArrayList<String> temp = new ArrayList<>();
// itemμ΄ κ°μ²΄μΌ μλ, λ°°μ΄μΌ μλ μλ€. (1κ°μΌ λλ κ°μ²΄, μ¬λ¬κ°μΌ λλ λ°°μ΄μ΄λ€.)
if (items.get("item") instanceof JSONObject) { // 1κ°μΈ κ²½μ°
JSONObject item = (JSONObject) items.get("item");
System.out.println("1.");
System.out.println("νΈμ : " + item.get("subwayRouteName"));
System.out.println("μλͺ
: " + item.get("subwayStationName"));
temp.add(item.get("subwayStationId").toString());
} else {
JSONArray arr = (JSONArray) items.get("item");
int n = 1;
for (Object obj : arr) {
JSONObject item = (JSONObject) obj;
System.out.println(n + ".");
System.out.println("νΈμ : " + item.get("subwayRouteName"));
System.out.println("μλͺ
: " + item.get("subwayStationName"));
System.out.println("----------------");
n++;
temp.add((String) item.get("subwayStationId").toString());
}
}
reader.close();
conn.disconnect();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
νμλ€κ³Ό νμλ₯Ό ν΅ν΄ κΈ°νμλ₯Ό μΆκ° μμ±νμκ³ , μꡬλΆμμλ₯Ό μμ±νλ€. νμ§λ§ μμ§ μ λΆ μμ±νμ§λ λͺ»ν΄μ μΆνμ λ€μ νμλ₯Ό ν ν μμ±νκΈ°λ‘ νμλ€.