2016-08-09 13 views
14

मुझे इस अवांछित char से int रूपांतरण में लूप में सामना करना पड़ रहा है। कहते हैं कि मैं वर्ण के इस सूची है और मैं उन में से एक को हटाना चाहते हैं:अक्षरों के एक ArrayList से एक चरित्र को हटाने

List<Character> chars = new ArrayList<>(); 
chars.add('a'); 
chars.add('b'); 
chars.add('c'); 
chars.remove('a'); // or chars.remove('a'-'0'); 

तो 'a' अपने int मूल्य के रूप में व्याख्या की है और मैं एक IndexOutOfBoundsException अपवाद हो रही है। क्या इसके लिए कोई आसान कामकाज है?

उत्तर

16

एक char एक int, जो autoboxing पर पूर्वता लेता है करने के लिए प्रोत्साहित किया जाता है, तो remove(int)remove(Object) के बजाय आपको बुलाया जा सकता है।

आप "सही" विधि मजबूर कर सकते हैं तर्क अपने आप को मुक्केबाजी द्वारा कहा जा:

chars.remove(Character.valueOf('a')); 
5

आप a कहां के लिए सूची के माध्यम से खोज सकते हैं।

chars.remove(chars.indexOf('a')); 
+0

कि कोई आवश्यकता नहीं है; आपको बस सही अधिभार कॉल करने की आवश्यकता है। – SLaks

+0

वाह मैंने दूसरा अनुमान लगाया। मैंने शुरुआत में इसे स्पष्ट रूप से डालने के लिए कहा और फिर मेरा जवाब बदल दिया। – learner0000

+0

मुझे पता है, लेकिन आपकी प्रारंभिक कास्ट (मुझे विश्वास है) गलत था। उसी प्रकार कास्टिंग करने का कोई प्रभाव नहीं पड़ता है। मेरा जवाब देखें – SLaks

8

आप remove(Object) बजाय remove(int) चयन करने के लिए एक वस्तु प्रकार में कास्ट करने के लिए संकलक के लिए मजबूर करने की जरूरत है:

chars.remove((Character) 'a'); 
संबंधित मुद्दे