Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
Gangrena
1

Написание словаря с использованием LinkedList

12.09.2013, 01:41. Показов 2925. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер дорогие форумчане, я новичок в программирование на языке java да и вообще в программирование. У меня возникли проблемы в написании программы чья задача симулировать словарь с использованием связанного списка. Шерстя инет я понял что реализация этого потребует от меня умения пользоваться коллекцией LinkedList.
Так же шерстя инет я нашел пару статей которые бы мне могли помочь но толком из них я нечего не понял. Главное что стало ясно что для реализации мне понадобиться класс Entry который должен быть расписан примерно так.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Entry<K, V> {
 
    K key;
    V value;
 
    public Entry(K key, V value) {
        this.key = key;
        this.value = value;
    }
 
    public K key() {
        return key;
    }
 
    public V value() {
        return value;
    }
}
Но я не совсем понимаю что мне с этим делать дальше.
Так же у меня есть Класс который и описывает словарь как таковой
вот код
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import java.util.LinkedList;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.*; 
import java.io.*; 
 
 
public class Dictionary <K, V> {
    LinkedList словарь =new LinkedList ();
    private String russian;
    private String english;
     File file = new File("слова.txt");
    
    public Dictionary ()
    {
        
         try {
             Scanner scanner = new Scanner(file);
             while (scanner.hasNextLine()) {
               словарь.add(scanner.nextLine());
             }
             scanner.close();
           } catch (FileNotFoundException e) {
             e.printStackTrace();
           }
        
    }
    public void insert (String english, String russian)
    {
        
        словарь.add(english);
        словарь.add(russian);
        
        
        
        
    }
    public String lookupGermanWord(String english)
    {
    
        
        return russian;
    }
    public static void main(String[] args) {
        
        
    }
    
    
}
Подскажите пожалуйста с какой стороны подойти к решению проблемы как сделать так что бы слова считывались в первую очередь из файла, но я бы мог и сам записать слова в словарь и как работать с этим Entry, я так и не понял для чего он нужен.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.09.2013, 01:41
Ответы с готовыми решениями:

Написание словаря новичком;)
Всем привет! Препод задал написать для автомата по экзу аналогичную фишку вот этой visuwords.com...

Написание русско-английского словаря (Turbo Prolog)
Написать программу, реализующую словарь. В словаре содержится следующая информация: слово и его...

Сокращения кода с использованием словаря
Нужна большая помощь в сокращения кода слишком много текста public void users_auth_Load(object...

Тестовое задание в использованием словаря
Здравствуйте! Не могу разобраться, пожалуйста, помогите. Выполняю тест для C++. Мне...

2
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
12.09.2013, 17:13 2
Цитата Сообщение от Gangrena Посмотреть сообщение
Подскажите пожалуйста с какой стороны подойти
со стороны чтения про Generics, Collections, io

Добавлено через 5 минут
но если оочень хотите стимул и хоть что-то рабочее худо бедно, то вот
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package pacj;
 
import java.util.HashMap;
 
public class Runner {
    public static void main(String[] args) {
        // коллекция, почитайте про них чтобы выбрать лучшую для себя
        HashMap<String, String> translator = new HashMap<>(); 
        // заполняем словать, тут врукопашную, но в этом месте
        // заполнять из вайла
        translator.put("hello", "привет");
        translator.put("good bye", "до свидания");
        //... ооочень много слов заполняем
        
        // слово, которое хотим перевести
        String iNeedTranslateWord = "hello";
        
        // магия
        System.out.println(translator.get(iNeedTranslateWord));
        
    }
    
    
 
}
Добавлено через 2 минуты
да, я бы делал не через HashMap, а действительно создал бы класс, в котором хранилось бы два поля с обеими переводами (или несколькими языками даже), а сами объекты засунул бы в список (а лучше два списка, отсортированных по необходимому языку для быстроты доступа в дальнейшем), а потом бы просто дергал нужные значения по нужным значениям

Добавлено через 2 часа 35 минут
вообщем альфа версия google_translate_killer
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package com.dictionary;
 
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
 
enum Language {
    ENGLISH, RUSSIAN
}
 
public class Dictionary {
 
    public static List<Word> list = new ArrayList<>();
    public static final String FILE_INPUT = "input.txt";
    
    public static void main(String[] args) {
        addWordsFromFile(FILE_INPUT);
        System.out.println(translateItOnEnum("я сказать привет пока", Language.ENGLISH));
    }
 
    public static void addWordsFromFile(String fileName) {
        String str = null;
        String[] arrayRuEng = null;
        try (BufferedReader fileReader = new BufferedReader(new FileReader(fileName))) {
            while((str = fileReader.readLine()) != null) {
                arrayRuEng = str.split(" ");
                list.add(new Word(arrayRuEng[0], arrayRuEng[1]));
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        
 
    }
 
    public static String translateItOnEnum(String str, Language langEnum) {
        StringBuilder sb = new StringBuilder();
        String[] arrayWords = str.split("[^а-яa-zА-ЯA-Z]");
 
        for (String s : arrayWords) {
            for (int i = 0; i < list.size(); i++) {
                switch (langEnum) {
                case RUSSIAN:
                    if (list.get(i).getEnglishWord().equals(s)) {
                        sb.append(list.get(i).getRussianWord()).append(" ");
                    }
                    break;
 
                case ENGLISH:
                    if (list.get(i).getRussianWord().equals(s)) {
                        sb.append(list.get(i).getEnglishWord()).append(" ");
 
                    }
                    break;
                }
            }
        }
 
        return sb.toString().trim();
    }
 
}
 
class Word {
    private String wordEnglish;
    private String wordRussian;
    
    public Word(String enEN, String ruRU) {
        wordEnglish = enEN;
        wordRussian = ruRU;
    }
    
    public String getEnglishWord() {
        return wordEnglish;
    }
    
    public String getRussianWord() {
        return wordRussian;
    }
 
}
файлик input.txt имеет такой вид:
hello привет
goodbye пока
i я
say сказать
or или
Добавлено через 1 минуту
кстати, мне одному кажется что тут смотрелся бы метод фабрики для "мультиязычности"?
0
KeM6Pug}I{a
49 / 49 / 1
Регистрация: 23.08.2013
Сообщений: 202
14.09.2013, 19:24 3
Самое интересное что у инглиш слова может быть не сколько переводов и обертка в виде двух инкапсулированных объектов не подойдет... Так же слова могут искаться по русскому переводу. Поэтому мне кажется тут подойдет бинарное дерево с английским словом и массивом русских.
0
14.09.2013, 19:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.09.2013, 19:24
Помогаю со студенческими работами здесь

Из словаря создается объект, именами атрибутов которого будут ключи словаря
Из словаря создается объект, именами атрибутов которого будут ключи словаря, а значениями -...

Написание программы на С++ с использованием WinAPI
Прошу вашей помощи в написании программы на С++ с использованием средств WinAPI Программа должна...

Написание программы на C# с использованием Flash
Доброе утро! Хочу написать программу, которая будет из картинок делать определённую анимацию,...

Написание программ с использованием файлов
Создать текстовый файл из 5 строк, прочитать созданный файл и получить новый файл. В новый файл...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru