powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Печать содержимого Hashtable <String, int>
9 сообщений из 9, страница 1 из 1
Печать содержимого Hashtable <String, int>
    #34352688
fplab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть простейшая таблица символов вида:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
...
    Hashtable <String, Integer> symbtable;
...
    // Добавить символ в таблицу
     public   void  newName (String name,  int  pc) {
         if  (symbtable.get (name) ==  null ) {
            symbtable.put (name, pc);
        }
         else  System.out.println ("Duplicated symbol " + name);
    }
...

в которую "набиваются" данные вида:

Код: plaintext
1.
2.
3.
4.
    newName ("TTT",  0 );
    newName ("jhgasjagh",  10 );
    newName ("Label5",  41 );
    ...
Вопрос: как перебрать и распечатать содержимое всей таблицы скопом ?
Спасибо
...
Рейтинг: 0 / 0
Печать содержимого Hashtable <String, int>
    #34352702
fplab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
     public   int  getAddress (String name) {
         if  (symbtable.get (name) !=  null ) {
             return  ((Integer) symbtable.get (name));
        }
         else  {
            System.out.println ("Symbol " + name + " not defined");
             return  (- 255 );
        }
    }

     public   void  printTable () {
        Set      keys = symbtable.keySet ();
        Iterator   it = keys.iterator ();
        String   name = "";
        System.out.println ("Symbol:");
         while  (it.hasNext ()) {
            name = it.next ().toString ();
            System.out.println (name + " " + getAddress (name));
        }
    }
хотя что-то мне подсказывает, что это решение не очень красивое.
...
Рейтинг: 0 / 0
Печать содержимого Hashtable <String, int>
    #34352740
StackTrace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Используй HashMap вместо Hashtable.
Код: plaintext
1.
2.
3.
4.
Map<String, Integer> symtable;
 for  (String str : symtable.keyValues()) {
    System.out.println(symtable.get(str));
}
 
...
Рейтинг: 0 / 0
Печать содержимого Hashtable <String, int>
    #34352747
StackTrace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пардон, очепятка получилась.
Код: plaintext
1.
2.
3.
4.
Map<String, Integer> symtable;
 for  (String str : symtable.keySet()) {
    System.out.println(symtable.get(str));
}
]
Синтаксис цикла for each (jdk>=1.5) более лаконичен для данного случая. Хотя с Hashtable получилось бы тоже самое. Просто этот класс древний и сами сантехники уже давно рекомендуют вместо него использовать HashMap.
...
Рейтинг: 0 / 0
Печать содержимого Hashtable <String, int>
    #34352766
jusio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем такие сложности?=)
Код: plaintext
1.
2.
3.
4.
5.
6.
        Hashtable<String,Integer> test =  new  Hashtable<String, Integer>();
        test.put("value1", 1 );
        test.put("value2",  2 );
        test.put("value3",  3 );
        test.put("value4",  4 );
        System.out.println(test);
Результат:
Код: plaintext
1.
{value3= 3 , value4= 4 , value1= 1 , value2= 2 }
Хотя если надо какой-то свой сопособ для распечатки, то лучше сделать следующе:
Код: plaintext
1.
2.
3.
4.
Set<Map.Entry<String,Integer>> entrys = symbtable.entrySet();
 for  (Map.Entry<String, Integer> entry : entrys) {
     System.out.println(entry.getKey() + ":" + entry.getValue());
}
...
Рейтинг: 0 / 0
Печать содержимого Hashtable <String, int>
    #34352788
fplab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, коллеги, в особенности jusio . Все получилось компактно и гораздо изящней, чем мой вариант
...
Рейтинг: 0 / 0
Печать содержимого Hashtable <String, int>
    #34374824
fplab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то туплю :) А как можно отсортировать вывод ? Следующий код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    // Распечатать содержимое таблицы символов
     public   void  printTable () {
        Set <Map.Entry<String, Integer>> entrys = symbtable.entrySet ();
        System.out.println ("Symbol :");
         for  (Map.Entry<String, Integer> entry : entrys) {
            System.out.println (entry.getKey () + "\t= " + entry.getValue ());
        }
    }
отрабатывает отлично и все выводит правильно, но порядок вывода "неестественный":
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Symbol :
SUM	=  34 
BEGIN	=  35 
QUIT	=  28 
LOOP	=  5 
OFFSET	=  33 
END	=  37 
Можно ли отсортировать вывод в порядке возрастания ключей, т.е. BEGIN, END, ..., QUIT ?
Спасибо заранее
...
Рейтинг: 0 / 0
Печать содержимого Hashtable <String, int>
    #34374933
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fplabЧто-то туплю :) А как можно отсортировать вывод ? Следующий код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    // Распечатать содержимое таблицы символов
     public   void  printTable () {
        Set <Map.Entry<String, Integer>> entrys = symbtable.entrySet ();
        System.out.println ("Symbol :");
         for  (Map.Entry<String, Integer> entry : entrys) {
            System.out.println (entry.getKey () + "\t= " + entry.getValue ());
        }
    }
отрабатывает отлично и все выводит правильно, но порядок вывода "неестественный":
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Symbol :
SUM	=  34 
BEGIN	=  35 
QUIT	=  28 
LOOP	=  5 
OFFSET	=  33 
END	=  37 
Можно ли отсортировать вывод в порядке возрастания ключей, т.е. BEGIN, END, ..., QUIT ?
Спасибо заранее
Используй TreeMap вместо HashMap - это сортированный по ключам набор.
...
Рейтинг: 0 / 0
Печать содержимого Hashtable <String, int>
    #34374951
fplab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точно. Спасибо !!! Бог не простит Вам Вашей доброты :)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Печать содержимого Hashtable <String, int>
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]