java
Integer 배열, String 배열 또는 정렬을 지원하는 모든 유형의 배열에서 요소를 정렬할 수 있는 단일 정렬 방법을 작성할 수 있다면 좋을 것입니다.
자바 일반 메소드와 제네릭 클래스를 사용하면 프로그래머가 단일 메소드 선언으로 관련 메소드 세트를 지정하거나 단일 클래스 선언으로 관련 유형 세트를 각각 지정할 수 있습니다.
제네릭은 또한 프로그래머가 컴파일 시간에 잘못된 형식을 잡을 수 있도록 컴파일 시간 형식 안전성을 제공합니다.
Java Generic 개념을 사용하여 객체 배열을 정렬하는 일반 메서드를 작성한 다음 Integer 배열, Double 배열, String 배열 등을 사용하여 일반 메서드를 호출하여 배열 요소를 정렬할 수 있습니다.
다른 형식의 인수로 호출할 수 있는 단일 제네릭 메서드 선언을 작성할 수 있습니다. 제네릭 메서드에 전달된 인수의 유형에 따라 컴파일러는 각 메서드 호출을 적절하게 처리합니다. 다음은 일반 메서드를 정의하는 규칙입니다 -
모든 일반 메서드 선언에는 메서드의 반환 유형(다음 예제에서는
각 유형 매개변수 섹션에는 쉼표로 구분된 하나 이상의 유형 매개변수가 있습니다. 유형 변수라고도 하는 유형 매개변수는 일반 유형 이름을 지정하는 식별자입니다.
형식 매개 변수는 반환 형식을 선언하고 실제 형식 인수라고 하는 제네릭 메서드에 전달된 인수 형식에 대한 자리 표시자 역할을 하는 데 사용할 수 있습니다.
제네릭 메서드의 본문은 다른 메서드와 마찬가지로 선언됩니다. 유형 매개변수는 기본 유형(예:int, double 및 char)이 아닌 참조 유형만 나타낼 수 있습니다.
다음 예는 단일 Generic 메서드를 사용하여 다른 유형의 배열을 인쇄하는 방법을 보여줍니다.
라이브 데모public class GenericMethodTest { // generic method printArray public static < E > void printArray( E[] inputArray ) { // Display array elements for(E element : inputArray) { System.out.printf("%s ", element); } System.out.println(); } public static void main(String args[]) { // Create arrays of Integer, Double and Character Integer[] intArray = { 1, 2, 3, 4, 5 }; Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4 }; Character[] charArray = { 'H', 'E', 'L', 'L', 'O' }; System.out.println("Array integerArray contains:"); printArray(intArray); // pass an Integer array System.out.println("\nArray doubleArray contains:"); printArray(doubleArray); // pass a Double array System.out.println("\nArray characterArray contains:"); printArray(charArray); // pass a Character array } }
이것은 다음과 같은 결과를 생성합니다 -
Array integerArray contains: 1 2 3 4 5 Array doubleArray contains: 1.1 2.2 3.3 4.4 Array characterArray contains: H E L L O
유형 매개변수에 전달할 수 있는 유형의 종류를 제한하려는 경우가 있습니다. 예를 들어 숫자에 대해 작동하는 메서드는 Number 또는 해당 하위 클래스의 인스턴스만 허용하려고 할 수 있습니다. 이것이 경계 유형 매개변수의 용도입니다.
제한된 유형 매개변수를 선언하려면 유형 매개변수의 이름, extends 키워드, 상한값을 차례로 나열하십시오.
다음 예는 extends가 "확장"(클래스에서와 같이) 또는 "구현"(인터페이스에서와 같이)을 의미하기 위해 일반적인 의미로 사용되는 방법을 보여줍니다. 이 예제는 세 개의 Comparable 객체 중 가장 큰 값을 반환하는 Generic 메서드입니다. -
라이브 데모public class MaximumTest { // determines the largest of three Comparable objects public static <T extends Comparable<T>> T maximum(T x, T y, T z) { T max = x; // assume x is initially the largest if(y.compareTo(max) > 0) { max = y; // y is the largest so far } if(z.compareTo(max) > 0) { max = z; // z is the largest now } return max; // returns the largest object } public static void main(String args[]) { System.out.printf("Max of %d, %d and %d is %d\n\n", 3, 4, 5, maximum( 3, 4, 5 )); System.out.printf("Max of %.1f,%.1f and %.1f is %.1f\n\n", 6.6, 8.8, 7.7, maximum( 6.6, 8.8, 7.7 )); System.out.printf("Max of %s, %s and %s is %s\n","pear", "apple", "orange", maximum("pear", "apple", "orange")); } }
이것은 다음과 같은 결과를 생성합니다 -
Max of 3, 4 and 5 is 5 Max of 6.6,8.8 and 7.7 is 8.8 Max of pear, apple and orange is pear
제네릭 클래스 선언은 클래스 이름 뒤에 형식 매개변수 섹션이 온다는 점을 제외하고는 제네릭이 아닌 클래스 선언처럼 보입니다.
제네릭 메서드와 마찬가지로 제네릭 클래스의 형식 매개 변수 섹션에는 쉼표로 구분된 하나 이상의 형식 매개 변수가 있을 수 있습니다. 이러한 클래스는 하나 이상의 매개변수를 허용하기 때문에 매개변수화된 클래스 또는 매개변수화된 유형으로 알려져 있습니다.
다음 예는 일반 클래스를 정의하는 방법을 보여줍니다 -
라이브 데모public class Box<T> { private T t; public void add(T t) { this.t = t; } public T get() { return t; } public static void main(String[] args) { Box<Integer> integerBox = new Box<Integer>(); Box<String> stringBox = new Box<String>(); integerBox.add(new Integer(10)); stringBox.add(new String("Hello World")); System.out.printf("Integer Value :%d\n\n", integerBox.get()); System.out.printf("String Value :%s\n", stringBox.get()); } }
이것은 다음과 같은 결과를 생성합니다 -
Integer Value :10 String Value :Hello World
java
자바 컬렉션 인터페이스 이 튜토리얼에서는 Java Collection 인터페이스와 그 하위 인터페이스에 대해 알아볼 것입니다. Collection interface는 Java 컬렉션 프레임워크의 루트 인터페이스입니다. 이 인터페이스의 직접적인 구현은 없습니다. 그러나 List와 같은 하위 인터페이스를 통해 구현됩니다. , Set , 및 Queue . 예를 들어, ArrayList 클래스는 List를 구현합니다. Collection의 하위 인터페이스인 인터페이스 인터페이스. 컬렉션의 하위 인터페이스 위에서 언급했듯이 C
자바 목록 이 자습서에서는 Java의 List 인터페이스와 해당 메서드에 대해 알아봅니다. 자바에서 List 인터페이스는 요소를 순차적으로 저장하고 액세스할 수 있도록 하는 정렬된 컬렉션입니다. Collection 확장 인터페이스. 목록을 구현하는 클래스 List 이후 인터페이스이므로 개체를 만들 수 없습니다. List의 기능을 사용하려면 인터페이스에서 다음 클래스를 사용할 수 있습니다. 배열 목록 링크드리스트 벡터 스택 이 클래스는 Collections 프레임워크에 정의되어 있으며 List 인터페이스. 목록은 어