मैं जावा में फाइलों की एक सूची बनाने की कोशिश कर रहा हूं जहां प्रत्येक फाइल में एक आईडी है, मैं एक HashMap का उपयोग कर रहा हूं, फिर ArrayList में फाइलों को HashMap में फाइलों से बदलें:

ArrayList<Object> tab = new ArrayList<>();
tab.addAll(Arrays.asList(par));//par contains files among objects 
File file = null;
HashMap<Integer, File> hm = new HashMap<>();
//loop start browsing tab for files
        file = new File(dir + fileName);                            
        hm.put(i, file);
//loop end
 for (Map.Entry<Integer, File> entry : hm.entrySet()) {
        tab.remove(entry.getKey());
        tab.add(entry.getKey(), entry.getValue());
 }

समस्या यह है कि यह इसे प्रतिस्थापित नहीं करता है बस उन्हें जोड़ता है और यह कोई वस्तु नहीं जोड़ रहा है। इसे सही तरीके से कैसे करें?

1
Sami 3 जून 2018, 00:47

2 जवाब

सबसे बढ़िया उत्तर

मुझे लगता है कि आप सभी File ऑब्जेक्ट्स को मानों HashMap से ArrayList<Object> तक HashMap से कुंजी के इंडेक्स में ले जाना चाहते हैं।

इंटरफ़ेस List में एक विधि List::set(int index, E element) है जो इस सूची में निर्दिष्ट स्थान पर निर्दिष्ट तत्व के साथ तत्व को प्रतिस्थापित करती है।

List<Object> tab = new ArrayList<>();                  // I suggest you List<File>
// ...
HashMap<Integer, File> hm = new HashMap<>();
// ...      
hm.entrySet().stream().forEach(entry -> tab.set(entry.getKey(), entry.getValue()));
0
Nikolas 3 जून 2018, 00:56

यदि आप सूची तत्वों को बदलना चाहते हैं, तो कुछ भी न हटाएं, इसके बजाय उपयोग करें

tab.set(entry.getKey(), entry.getValue());

साथ ही, मुझे लगता है कि आप ArrayList<File> tab चाहते हैं

0
OneCricketeer 3 जून 2018, 00:51