2011-05-09 24 views
5

से तत्व को दूर करने के लिए मैं उदाहरण के लिए एक सरणी है। उदाहरण के लिए मैं दूर करने के लिए आइटम "बी" चाहते हैं, तो यह है कि सरणी की तरह दिखता है:एक सरणी

{{"a","1"}, 
{"c","1"}} 

मैं इसे करने का एक तरीका नहीं मिल रहा। क्या मैं यहाँ अब तक पाया है मेरे लिए काम कर रहा है नहीं :(

+0

आप बेहतर सरणी के बजाय 'ArrayList' का उपयोग करते हैं। – Behrang

+0

संभव डुप्लिकेट [मैं जावा में एक ऐरे से वस्तुओं को कैसे हटा सकता हूं?] (Http://stackoverflow.com/questions/112503/how-do-i-remove-objects-from-an-array-in-java) – McDowell

+0

नहीं .... यह डुप्लिकेट नहीं है। – Peter

उत्तर

10

आप किसी सरणी से तत्व को नहीं हटा सकते हैं। सरणी आवंटित होने पर जावा सरणी का आकार निर्धारित किया जाता है, और बदला नहीं जा सकता है। सबसे अच्छा तुम कर सकते है:

  • असाइन प्रासंगिक स्थिति में सरणी null; जैसे

    test[1] = null; 
    

    इस "छेद" सरणी जहां null मान हैं में से निपटने की समस्या से आप छोड़ देता है। (कुछ मामलों में यह कोई समस्या नहीं है ... लेकिन ज्यादातर मामलों में यह है।)

  • हटाए गए तत्व के साथ एक नई सरणी बनाएं; जैसे

    String[][] tmp = new String[test.length - 1][]; 
    int j = 0; 
    for (int i = 0; i < test.length; i++) { 
        if (i != indexOfItemToRemove) { 
         tmp[j++] = test[i]; 
        } 
    } 
    test = tmp; 
    

    The Apache कॉमन्स ArrayUtils वर्ग कुछ स्थिर तरीकों कि इस अधिक बड़े करीने से करना होगा (Object[] ArrayUtils.remove(Object[], int) जैसे है, लेकिन तथ्य यह है कि इस दृष्टिकोण एक नई सरणी वस्तु बनाता रहता है।

एक बेहतर दृष्टिकोण होगा एक उपयुक्त Collection प्रकार का उपयोग करने के लिए उदाहरण के लिए, ArrayList प्रकार एक विधि है कि आप किसी दिए गए स्थान पर तत्व को दूर करने की अनुमति देता है

6

कोई अंतर्निहित तरीका करने के लिए एक नियमित रूप से जावा सरणी से आइटम "निकालें" नहीं है।

क्या आप उपयोग करना चाहते एक ArrayList है।

2

आप सरणी में null (test[0][1] = null;) में प्रविष्टि सेट कर सकते हैं। हालांकि, इस आइटम को "हटाने" जैसे कि सरणी में पहले से कम एक तत्व होगा, सरणी को पुनर्निर्मित किए बिना करने योग्य नहीं है। यदि आप डेटा को बदलने की योजना बना रहे हैं डेटा संरचना नियमित रूप से ArrayList (या आपकी आवश्यकताओं के आधार पर एक और संग्रह वर्ग) अधिक सुविधाजनक हो सकती है।

0

मेरे समाधान है:।।

आप किसी सरणी => से तत्व को नहीं हटा सकते हैं, यह सही है, लेकिन हम वर्तमान सरणी को बदलने के लिए कुछ कर सकते हैं।

No need assign null to the array at the relevant position; e.g. 

test[1] = null; 

Create a new array with the element removed; e.g. 

String[][] temp = new String[test.length - 1][]; 

स्ट्रिंग में सूचकांक पाने के लिए की आवश्यकता/सरणी दूर करने के लिए: IndexToRemove

for (int i = 0; i < test.length-1; i++) { 
       if (i<IndexToRemove){ 
        temp[i]=test[i]; 
       }else if (i==IndexToRemove){ 
        temp[i]=test[i+1]; 
       }else { 
        temp[i]=test[i+1]; 
       } 
} 
test = temp; 

आशा है कि यह उपयोगी!