मैंने जेनेरिक फ़ंक्शन लिखने की कोशिश की जो सरणी से डुप्लिकेट तत्वों को हटा देता है।सामान्य प्रकार पैरामीटर कैसे कहते हैं "विस्तार" तुलनात्मक नहीं "उपकरण"?
public static <E extends Comparable<E>> ArrayList<E> removeDuplicate(E[] arr) {
//do quicksort
Arrays.sort(arr);
ArrayList<E> list = new ArrayList<E>();
int i;
for(i=0; i<arr.length-1; i++) {
if(arr[i].compareTo(arr[i+1]) != 0) { //if not duplicate, add to the list
list.add(arr[i]);
}
}
list.add(arr[i]); //add last element
return list;
}
आप देख सकते हैं आप पूर्णांक [] सरणी की तरह आदिम प्रकार पारित नहीं हो सकता के बाद से मैं compareTo() विधि कि तुलनीय इंटरफ़ेस में निर्धारित द्वारा तत्वों की तुलना कर रहा हूँ।
public static <E extends Comparable<E>> ArrayList<E> removeDuplicate(E[] arr) {
कैसे आ यह कहते हैं, "तुलनीय फैली":
मैं पहली पंक्ति (विधि घोषणा) देखा?
तुलनात्मक एक इंटरफ़ेस है तो यह "तुलनात्मक लागू नहीं" क्यों है? यह पहली बार है जब मैंने जेनेरिक फ़ंक्शन लिखा था इसलिए मैं इस तरह के विवरण के बारे में उलझन में हूं। (कोई आश्चर्य मुझे समझने से रोक देगा ..)
संपादित करें: इस विषय से संबंधित इस आलेख को मिला।
http://www.tutorialspoint.com/java/java_generics.htm
क्योंकि 'उपकरण विस्तारित करता है' –
[जावा जेनेरिकों का संभावित डुप्लिकेट - क्यों "टी बढ़ाता है" लेकिन "टी लागू नहीं करता"? (Http://stackoverflow.com/questions/976441/java-generics- क्यों -इस-विस्तार-टी-अनुमत-लेकिन-नहीं-लागू-टी) – Lii