2014-10-21 5 views
5

में एक लिंक्डलिस्ट में जोड़ना मैं एक हैशपैप के भीतर एक लिंक्डलिस्ट में जोड़ना चाहता हूं। पूर्व जॉन: -> जैक -> काला -> दरार सुसान: -> सैली, सैमी, मूर्खतापूर्ण ectएक हैश मैप <स्ट्रिंग, लिंक्डलिस्ट>

इम काफी नहीं है कि यह कैसे करना सुनिश्चित करें। क्या मुझे प्रत्येक नाम के लिए एक नई लिंक्डलिस्ट चाहिए और यदि ऐसा है तो मैं गतिशील रूप से एक कैसे बना सकता हूं। कोशिश करने के लिए मैंने कुछ नमूना कोड दिया है।

import java.util.*; 
import java.io.*; 
public class test { 
    public static void main(String args[]) throws FileNotFoundException{ 
     HashMap<String, LinkedList<String>> testMap = new HashMap<String, LinkedList<String>>(); 
     File testFile = new File("testFile.txt"); 
     Scanner enterFile = new Scanner(testFile); 
     String nextline = ""; 
     LinkedList<String> numberList = new LinkedList<String>(); 
     int x = 0; 
     while(enterFile.hasNextLine()){ 
      nextline = enterFile.nextLine(); 
      testMap.put(nextline.substring(0,1),numberList); 
      for(int i = 1; i < nextline.length() - 1; i++){ 
       System.out.println(nextline); 
       testMap.put(nextline.substring(0,1),testMap.add(nextline.substring(i,i+1))); 
      } 
      x++; 
     } 
     LinkedList<String> printHashList = new LinkedList<String>(); 
     printHashList = testMap.get(1); 
     if(printHashList.peek() != "p"){ 
      System.out.println(printHashList.peek()); 
     } 
    } 
} 

srry अगर यह एक अच्छी पोस्ट यह मेरा पहला एक

+0

यह मैंने देखा है कई की तुलना में काफी बेहतर पहली पोस्ट है, अच्छा काम – Neilos

उत्तर

2
public void putToMap(String name) { 
    String firstLetter = name.substring(0, 1); 

    List<String> names = testMap.get(firstLetter); 
    if (names == null) { 
     names = new LinkedList<String>(); 
     testMap.put(firstLetter, names); 
    } 

    names.add(name); 
} 
+0

सही एल्गोरिथ्म को बनाए रखने के लिए, लेकिन विधि स्थिर होना चाहिए, और testMap के रूप में पास करना चाहिए एक पैरामीटर (यदि मुख्य विधि से एक्सेस हो रहा है)। – Chris

+2

हाँ। मुझे बस परवाह नहीं है ... :) –

+0

गुवा एक बहुत ही वसा पुस्तकालय है जिसमें केवल एक ही सुविधा शामिल है। मैं इस विधि का उपयोग करता हूं – etherous

1

एलेक्स के जवाब आपकी समस्या के लिए आम (और सबसे हल्के) समाधान है, और एक के रूप में आप का चयन करना चाहिए नहीं है अपने उत्तर (यदि वह मेरी टिप्पणी के अनुसार इसे संशोधित करता है), लेकिन सिर्फ आपको यह बताना चाहता था कि एक और समाधान LinkedListMultiMap (जो गुवा पुस्तकालय में एक वर्ग है) का उपयोग करना है।

LinkedListMultiMap सूचियों के नक्शे से निपटने का एक आसान तरीका है (लेकिन गुवा पुस्तकालय के अतिरिक्त लाइब्रेरी ओवरहेड है)। आप प्रति कुंजी अलग-अलग मान जोड़ सकते हैं, जो मुझे विश्वास है कि आपका वांछित व्यवहार है।

+0

मुझे याद है कि Google मल्टीमैप काफी लोकप्रिय होता था। निश्चित नहीं है कि अभी भी उपयोग किया जा रहा है क्योंकि मेरे पास सरल समाधान चुनने की मजबूत प्रवृत्ति है जब तक कि इसे लिखने की लागत उचित न हो ... –

+0

मैं संदर्भ उद्देश्यों के लिए बस एक और समाधान पेश कर रहा था। व्यक्तिगत रूप से, मैं आपका समाधान चुनूंगा। – Chris

संबंधित मुद्दे