2015-10-30 5 views
5

से संबंधित जावा साक्षात्कार पहेली मुझे साक्षात्कार प्रश्न का सामना करना पड़ा।सेट

नीचे दिए गए कोड का आउटपुट क्या है।

package com.demo; 

import java.util.HashSet; 
import java.util.Set; 

public class Test { 

    public static void main(String[] args) { 
    Set<Short> set=new HashSet<Short>(); 

     for (short i = 0; i < 10; i++){ 
      set.add(i); 
      set.remove(i-1); 
     } 

     System.out.println(set.size()); 
    } 
} 

यह दे रहा है उत्पादन: 10

लेकिन मैं भ्रमित क्यों इसके उत्पादन से 10

किसी को भी मुझे जवाब कर सकते हैं कृपया यहाँ क्या हो रहा हूँ।

धन्यवाद

SItansu

उत्तर

5

शाब्दिक मूल्य 1int प्रकार का है। मूल्य i - 1 इस प्रकार int प्रकार है और short टाइप i के प्रकार का नहीं है। इस प्रकार आप सेट में Short के बॉक्स किए गए उदाहरण जोड़ रहे हैं, लेकिन Integer के बॉक्स किए गए उदाहरण हटा रहे हैं। remove() विधि इस प्रकार कुछ भी नहीं हटाती है, क्योंकि ShortInteger के बराबर नहीं है।

+1

यह भी ध्यान देने योग्य है कि आपको टाइप मिस्चैच के लिए कोई चेतावनी या त्रुटि नहीं मिलती है क्योंकि निकालने के लिए 'ऑब्जेक्ट' टाइप करें, 'सेट ' के लिए भी एक तर्क लेने के लिए परिभाषित किया गया है। –

+0

कंपाइलर वास्तव में खुश है। मेरा आईडीई, हालांकि (IntelliJ) मुझे इस संभावित बग के बारे में चेतावनी देने के लिए पर्याप्त स्मार्ट है। –

+0

आह, मैं इस समय ग्रहण का उपयोग कर रहा हूं, लेकिन यह इसके लिए कुछ भी नहीं दिखाता है। आह। (शायद इसके लिए कहीं भी एक सेटिंग है ....) –

5

अभिव्यक्ति i-1 पूर्णांक टाइप है और एक पूर्णांक वस्तु को autoboxed है, इसलिए कार्यक्रम सेट करने के लिए लघु वस्तुओं जोड़ रहा है और उसके बाद पूर्णांक वस्तुओं को हटाने की कोशिश करता है। सेट में कोई इंटीजर ऑब्जेक्ट नहीं है, इसलिए कुछ भी कभी नहीं हटाया जाता है।