سؤال

وأنا بناء المكنز باستخدام HashMap <String,ArrayList<String>> لعقد الكلمات ومرادفاتها (مطلوب هذه البنية البيانات).

لغرض التعيين، وتعتبر العلاقة synonymity متعدية. (ولنا أن نتخيل المعجم مثل رسم بياني). ما أحاول تحقيقه هو طباعة هذا الرسم البياني في ملف نصي، مع المكونة الموصولة في كل سطر. وبعبارة أخرى، ينبغي لجميع الكلمات التي يمكن تجميعها معا في المرادفات الذهاب في سطر واحد.

public void save() {
    try {
        FileWriter fw = new FileWriter(defaultDefinitionFile);
        BufferedWriter out = new BufferedWriter(fw);
        Set<String> keys = thesaurus.keySet();
        Iterator<String> ite = keys.iterator();
        while (ite.hasNext()) {
            String key = ite.next();
            out.write(key);
            ArrayList<String> synonyms = thesaurus.get(key);
            Iterator<String> i = synonyms.iterator();
            while (i.hasNext()) {
                String syn = i.next();
                out.write(","+syn);
                keys.remove(syn);
            }
            out.write("\r\n");
        }
        out.close();
        fw.close();
    }
    catch (Exception e) {
        System.out.println("Error writing to file");
        e.printStackTrace();
    }
}

وهذه هي الطريقة التي تخيلت أن يحدث:

وطباعة كلمة جنبا إلى جنب مع كل من مرادفاته، ثم إزالة تلك المرادفات من بنية البيانات بحيث ليس لدينا خطوط مكررة.

والمشكلة هي بالطبع لا أستطيع أن حذف أي شيء بينما أنا بالتكرار عبر محتوى hashmap.

وأي النهج البديلة أنا في عداد المفقودين؟

وP.S. أنا الحفاظ على "الرسم البياني" الاستعارة في جميع أنحاء فقط لأنني في حاجة إلى العنوان ليكون بليغا وsuccint. أنا أفهم أن هذا التشبيه يقتصر في فائدة.

هل كانت مفيدة؟

المحلول

ويمكنك تخزين الكلمات التي طبعت في <لأ href = "http://java.sun.com/javase/6/docs/api/java/util/Set.html" يختلط = "نوفولو noreferrer" > تعيين ، ومن ثم التعامل فقط الكلمات التي ليست بعد في المجموعة.

جانبية ملاحظة : على الرغم من أنه صحيح أن المرء لا يستطيع التفكير في هذا الأمر باعتباره مشكلة الرسم البياني، التعليمات البرمجية لا يتعامل مع هذا على هذا النحو. إذا كان لنا أن علاج هذا الأمر باعتباره مشكلة الرسم البياني، ثم أننا لن يجعل افتراض أن كل كلمة لها عن مرادفاته المدرجة في ArrayList المقابلة، مما يدعو لحساب إغلاق متماثل و متعدية. فقط ثم فإننا استخراج فصول التكافؤ.

و(في الواقع العلاقة مرادف ليست متعدية، وأنا أعلم).

نصائح أخرى

وأنا لا هذا هذا (الفكرة العامة الخاصة بك) ستعمل باسم "synonimity" ليست خاصية متعدية.

وهناك الكثير من الكلمات التي تحتوي على مرادفات ليست مرادفات أنفسهم.

وبدلا من إزالة هذا البند، إضافة إلى قائمة من البنود تجاهلها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top