2015년 9월 1일 화요일

자바8,람다식,객체정렬,Collections.sort,Lambda,Double Colon,Comparable, compare

자바8,람다식,객체정렬,Collections.sort,Lambda,Double Colon,Comparable, compare

아래 예제를 보시면 이해 되실 겁니다.

감사합니다.



package onj;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

class OracleJavaCommunity {
private String name;
private int age;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}
public String toString() {
return "[name : " + name + ", age=" + age + " ]";
}
}

//이름으로 정렬
class OjcSortByName  {
public int compare(OracleJavaCommunity ojc1, OracleJavaCommunity ojc2) {
return ojc1.getName().compareTo(ojc2.getName());
}
}

//나이로 정렬
class OjcSortByAge  {
public int compare(OracleJavaCommunity ojc1, OracleJavaCommunity ojc2) {
return ojc1.getAge() - ojc2.getAge();
}
}

public class LambdaTest2 {
public static void main(String[] args) {
OracleJavaCommunity ojc1 = new OracleJavaCommunity();
OracleJavaCommunity ojc2 = new OracleJavaCommunity();
OracleJavaCommunity ojc3 = new OracleJavaCommunity();

ojc1.setName("오라클");
ojc1.setAge(15);

ojc2.setName("자바");
ojc2.setAge(9);

ojc3.setName("닷넷");
ojc3.setAge(8);

List ojcs = new ArrayList();
ojcs.add(ojc1);
ojcs.add(ojc2);
ojcs.add(ojc3);

// 원본 출력, double colon 연산자이용
ojcs.forEach(System.out::println);
System.out.println("---------------------");

// age로 정렬1
Collections.sort(ojcs, (OracleJavaCommunity ojc4,
OracleJavaCommunity ojc5) -> {
return ojc4.getAge() - ojc5.getAge();
});
//정렬후 출력1
ojcs.forEach(System.out::println);
//이름(name)으로 정렬2
OjcSortByName sortOjc = new OjcSortByName();
Collections.sort(ojcs, 
(OracleJavaCommunity ojc6, OracleJavaCommunity ojc7) 
-> sortOjc.compare(ojc6,  ojc7));
//이름정렬후 출력2
System.out.println("---------------------");
ojcs.forEach(System.out::println);
//나이(age)로 정렬3
OjcSortByAge sortOjc2 = new OjcSortByAge();
Collections.sort(ojcs, sortOjc2::compare);
//나이정렬후 출력3
System.out.println("---------------------");
ojcs.forEach(System.out::println);
}
}



[결과]


[name : 오라클, age=15 ]
[name : 자바, age=9 ]
[name : 닷넷, age=8 ]
---------------------
[name : 닷넷, age=8 ]
[name : 자바, age=9 ]
[name : 오라클, age=15 ]
---------------------
[name : 닷넷, age=8 ]
[name : 오라클, age=15 ]
[name : 자바, age=9 ]
---------------------
[name : 닷넷, age=8 ]
[name : 자바, age=9 ]
[name : 오라클, age=15 ]

댓글 없음:

댓글 쓰기