ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Collection 객체 정렬하기-22.03.25
    고급자바 2022. 3. 25. 11:57
    728x90
    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
Designed by Tistory.