이 질문은 다음과 같이 컬렉션 도구 클래스의 두 가지 정렬 () 메소드를 소개합니다.
1. 컬렉션 도구 클래스의 두 정렬 () 메소드
형식 1 : public static <t는 비슷한 <? Super T >> void 정렬 (목록 <T> 목록)
참고 :이 방법에서 제네릭 <t>는 비슷한 인터페이스의 모든 서브 클래스, 즉 비슷한 인터페이스 서브 클래스 유형의 데이터 만 비교하고 정렬 할 수 있습니다. 다른 유형의 데이터를 비교하고 정렬하려면 비슷한 인터페이스를 상속하고
위반자 () 및 compareto () 메소드를 재정의합니다. 그중에서도 문자열 클래스와 정수 클래스는 모두 비슷한 인터페이스 서브 클래스이며 정렬 할 수 있지만 기본 유형을 정렬 할 수는 없습니다. 비교 항목은 클래스 내에 지정됩니다
형식 2 : public static <t> void 정렬 (목록 <t> 목록, 비교기 <? super t> c)
참고 :이 메소드는 비교 메소드 비교기 <? Super T> C, 즉 C는 비교기 <? super t> interface, 비교 항목을 지정하기 위해 비교 () 메소드를 대체하십시오. 비교 항목은 클래스 외부에서 지정되며 더 유연합니다.
2. 예
예에서 문자열과 숫자를 얻는 일반적인 방법 :
/ *** 무작위 및 비 반복 문자열 생성 : 숫자 문자열 수를 생성*/ public static list <string> 생성 (int 번호) {list <string> liststring = new arraylist <> (); // 리턴 값 목록을 저장하는 데 사용됩니다. <integer> length = null; // 문자열 길이 StringBuffer sb = new StringBuffer (); // 중간 변수 int control = 0; // 제어 번호 문자열 [] chars = new String [], "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "s", "t", "u", ",", ",", ",", ",", ",", " "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "m", ",", "," "," " "s", "t", "u", "v", "w", "x", "y", "z"}; while (true) {// 제어 종료 if (control == number) {break; } // 임의의 숫자를 생성하고 36 비트 2aaAB761-4341-4968-ACEB-3861EE3824B2 UUID 유형 데이터 문자열 uuid = uuid.randomuuid (). toString (). 교체 ( "-", ""); sb.setlength (0); // 무작위 문자열의 길이를 가져 오면 길이는 0 do {length = getDiffno (1, 11); } while (length.get (0) == 0); // (int i = 0; i <longth.get (0); i ++) {String str = uuid.substring (i*3, (i*3+3)); // str 문자열을 16 진수로 변환하고 그 값을 얻습니다 int x = integer.parseint (str, 16); // 나머지를 얻습니다 : x % 0x3e-- 0x3e = 3*16 + 14 = 62, 여기서 숯은 62 자 sb.append (chars [x % 0x3e]); } listString.add (sb.toString ()); 제어 ++; } return listString; }/ *** 무작위 및 비 반복 숫자 생성 : n 숫자 생성 숫자 최대 생성 범위*/ public static list <integer> getDiffno (int n, int max) {// [0-n] 비 반복 무작위 숫자 // 목록을 저장하는 데 사용되는 목록 <integer> list = new arraylist <> (); 랜덤 random = new random (); 정수 K; for (int i = 0; i <n; i ++) {do {k = random.nextint (max); } while (list.contains (k)); list.add (k); } 반환 목록; } 1. 정수 제네릭 목록을 정렬하십시오
/*** 1. Collections.sort () 메소드를 통해 정수 제네릭 목록을 정렬합니다. * 정수 제네릭 목록을 작성하고, 100 내에 10 개의 비 반복 랜덤 정수를 삽입하고, collections.sort () 메소드를 분류하기 위해 호출하십시오. System.out.println("----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- integer : integerList) { System.out.println ( "요소 :" + 정수)} collections.sort (IntegerList); System.out.println("----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 2. 문자열 제네릭 목록을 정렬하십시오
/*** 1. 문자열 제네릭 목록을 정렬하십시오. 문자열 제네릭 목록을 작성하고, 외부 문자열 요소를 추가하고, 정렬 메소드를 호출하고, 정렬 순서를 다시 출력 */ public void listStringsort () {list <string> stringList = new ArrayList <string> (); StringList.add ( "eipjlcx"); StringList.add ( "wvqrufc"); StringList.add ( "j"); StringList.add ( "hdau2g"); StringList.add ( "m0wswhd3"); System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- / *** 10 개의 비 반복 문자열의 임의 생성이 필요한 문자열 제네릭 목록을 정렬하고 문자열의 길이는 10*/ public void listStringRandomsort () {// 임의의 문자열 목록 생성 <string> liststring = generatestring (10); System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- System.out.println ( "----------------------------------------------------------------------3. 다른 유형의 제네릭의 정렬 목록
과정 수업 구현
/** * 코스 클래스 * @Author Administrator * */Public Class Course {공개 문자열 ID; 공개 문자열 이름; 공개 코스 (문자열 ID, 문자열 이름) {this.id = id; this.name = 이름; } public course () {} @override public int hashcode () {Final int prime = 31; int result = 1; result = prime * result + ((name == null)? 0 : name.hashcode ()); 반환 결과; } @override public boolean equals (Object obj) {if (this == obj) return true; if (obj == null) false를 반환합니다. if (! (obj instanceof))) false를 반환합니다. 코스 기타 = (코스) obj; if (name == null) {if (other.name! = null) false를 반환합니다. } else if (! name.equals (기타 .name)) false를 반환합니다. 진실을 반환하십시오. }} 학생 수업은 비슷한 인터페이스를 구현하고 클래스 내에서 비교 항목을 설정합니다.
import java.util.hashset; import java.util.set;/** * 학생 클래스 * @author 관리자 * */public class student emplications <nody <soident> {public string id; 공개 문자열 이름; 공개 세트 <course> 코스; 공개 학생 (문자열 ID, 문자열 이름) {this.id = id; this.name = 이름; this.courses = new Hashset <course> (); } @override public int hashcode () {Final int prime = 31; int result = 1; result = prime * result + ((name == null)? 0 : name.hashcode ()); 반환 결과; } @override public boolean equals (Object obj) {if (this == obj) return true; if (obj == null) false를 반환합니다. if (! (obj instance of incastof Student)) false를 반환합니다. 학생 기타 = (학생) obj; if (name == null) {if (other.name! = null) false를 반환합니다. } else if (! name.equals (기타 .name)) false를 반환합니다. 진실을 반환하십시오. } @override public int compareto (student o) {// ID를 비교 항목으로 설정하십시오. }} 비교기 인터페이스 구현 및 클래스 밖에서 비교 항목을 설정
import java.util.comparator; public class student comparator 구현 비교기 <스튜던트> {@override public int compor (학생 O1, 학생 O2) {// todo auto-auto-auto-auto-retrated method stub return o1.name.compareto (o2.name); }} 학생 수업 비교
/*** 다른 유형의 제네릭 목록을 정렬하여 학생을 예로 들어갑니다. */ public void list comparatorsort () {list <tudent> 학생 목록 = new ArrayList <tudent> (); 목록 <integer> list = getDiffno (4, 1000); StudentList.add (신입생 (List.get (0) + "", "Mike"); StudentList.add (신입생 (List.get (1) + "", "Angela"); StudentList.add (신입생 (List.get (2) + "", "Lucy"); StudentList.add (신입생 (1000 + "", "Beyonce"); System.out.println("----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- System.out.println ( "학생 :" + student.id + ":" + student.name); System.out.println("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.