소개 : 여러 도구는 클래스 분류, 비교 및 다른 작업을 모델링 할 때, 필요가 얼마나 게으른 항상 저장할 때문에, 코드 중복을 많이 쓰기 때문에 제네릭을 사용하여 코드를 단순화하기 위해이 물건을 고려해야 할
케이스 : 현재 모델이 두 클래스, 과일과 사람은, 그러나 방법은 다양 비즈니스 로직을 분류, 따라서이 정렬 방법을 쓸 필요가있다 필요하지만 너무 장소의 같은 종류 때문에, 유일한 차이점은 두 개의 판사입니다 이 간단한 조작으로 이렇게 크기 관계 객체.
에 따를 절차 :
1, 모델 클래스 인터페이스 인터페이스 모델의 준비
(1 개) 공중 인터페이스 모델 <T> { 2 공개 INT 은 compareTo (T 모델); 3 }
여기에 단지 우리가 비교하는 방법을 정의 할 필요가
2, Person 클래스 클래스 사람의 준비
1 공용 클래스 사람 구현 모델 <사람> { 2 개인 문자열 이름; 3 4 공용 인 (문자열 _name) { 5 이 .name을 = _name; 6 } 7 8 @Override 9 공용 INT 은 compareTo (사람 _person) { 10 반환 이 .name.compareToIgnoreCase (_person.name); 11 } 12 }
예를 들어 나는 비교 방법이 동일 아마 쓰기 때문에 코드의 과일 나는 감동하지 않지만, 실제 비즈니스 코드는 동일하지 않을 수 있습니다
3, 쓰기 도구 클래스 정렬
1 개 공용 클래스 정렬 { 2 3 공개 정적 <T는 확장 모델 <T >> 공극 정렬 (목록 <T> 목록) { 4 대 ( int로 -; 나는 ++ 1 내가 <는 list.size () I = 0 ) { 5 대 ( INT의 J = I, J <는 list.size (); J ++ ) { (6) 의 경우 (list.get (I) .compareTo (list.get (j))> 0 ) { 7 T = 스왑 list.get (I) ; 8 list.set (I, list.get (j)); 9 list.set (j 스왑); (10) } 11 } 12 } 13 } 14 }
쉽게 세트에 정렬 알고리즘 가서 발견
그런 다음 주요 기능은 호출하는 것입니다
1 개 공용 클래스 주요 { 2 공용 정적 무효 메인 (문자열 []에 args) { 3 LinkedList의 <이용시> 목록 = 새 LinkedList의 <> (); 4 에는 list.add ( 새 사람 ( "관리자" )); 5 에는 list.add ( 새 사람 ( "루트" )); 6 에는 list.add ( 새 사람 ( "화웨이" )); 7 에는 list.add ( 새 사람 ( "시스코" )); 8 Sort.sort (목록); 9 에 대한 {: (목록 사람 항목) 10 에서 System.out.println (item.toString ()); 11 } 12 } 13 }
4 과일 클래스 방법을 이용하여 정렬 될 수 Person 클래스에 따른 모델 compareTo 메소드로서 구현 될 수있다 Sort.sort
포스트 스크립트 : 내 생각은, 모델 인터페이스를 쓰기 인터페이스의 compareTo 메소드를 작성하기 시작, 다음 매개 변수 유형을 작성하는 방법을 모르는
당신이 모델을 작성하는 경우, 다음, 때 사람은 compareTo 메소드 매개 변수 유형이 확실히 모델입니다 달성
나는이 논리가 얼마나 불편 한 수, 비교적 간단 모델 인터페이스 플러스 getName 방법 후 경우, 이름 필드와 비교
이름 필드가 없을 수 있습니다 모델 클래스와 같은 사람 클래스는 과일 범주와 비교 될 수있다
이 논리에서 그렇게 할 수는 없지만, 그러나 아 불편 그것을보고, 그래서 그는 제네릭 함께이 일을 생각 할 수있는 방법