-
Collection 객체 정렬하기-22.03.25고급자바 2022. 3. 25. 11:57728x90
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class T04_ListSortTest { public static void main(String[] args) { List<Member> memList=new ArrayList<Member>(); memList.add(new Member(1,"홍길동","010-1111-1111")); memList.add(new Member(5,"변학도","010-1111-2222")); memList.add(new Member(9,"성춘향","010-1111-3333")); memList.add(new Member(3,"이순신","010-1111-4444")); memList.add(new Member(6,"강감찬","010-1111-5555")); memList.add(new Member(2,"일지매","010-1111-6666")); System.out.println("정렬전"); for(Member mem: memList) { System.out.println(mem); } System.out.println("-----------------------------------"); Collections.sort(memList); System.out.println("정렬후"); for(Member mem: memList) { System.out.println(mem); } System.out.println("-----------------------------------"); //외부 정렬 기준을 이용한 정렬하기 Collections.sort(memList, new SortNumDec()); System.out.println("정렬 후(번호의 내림차순 정렬)..."); for(Member mem: memList) { System.out.println(mem); } System.out.println("-----------------------------------"); } }
원래는 별도로 선언해야함 하지만 여기서 같이 구현
--Member에 오류뜨면 첫번째 눌러주기! 오버라이드해줘야함, --객체자체 정렬은 Comparable
class Member implements Comparable<Member>{ private int num; //번호 private String name; //이름 private String tel; //전화번호 public Member(int num, String name, String tel) { super(); this.num = num; this.name = name; this.tel = tel; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getTel() { return tel; } public void setTel(String tel) { this.tel = tel; } @Override public String toString() { return "Member [num=" + num + ", name=" + name + ", tel=" + tel + "]"; } //이름을 기준으로 오름차순 정렬이 되도록 설정한다. @Override public int compareTo(Member mem) { return this.getName().compareTo(mem.getName()); }
외부정렬자 선언 ,--Member의 번호(num)의 내림차순으로 정렬하기
class SortNumDec implements Comparator<Member>{ @Override public int compare(Member mem1, Member mem2) { /*if(mem1.getNum()>mem2.getNum()) { return -1; //원래는 1이지만 내림이므로 }else if(mem1.getNum()==mem2.getNum()) { return 0; }else { return 1; //mem2가 더 큰경우 }*/ //wrapper클래스에서 제공하는 메서드를 이용하는 방법 return new Integer(mem1.getNum()).compareTo(mem2.getNum())*-1; } }
728x90'고급자바' 카테고리의 다른 글
Map,properties-22.03.28 (0) 2022.03.28 hashCode(),equals()-22.03.25 (0) 2022.03.25 Set 인터페이스-22.03.25 (0) 2022.03.25 컬렉션 프레임워크-22.03.24 (0) 2022.03.24 고급자바-2022.03.24 (0) 2022.03.24