Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
 Аватар для Filislav
339 / 285 / 62
Регистрация: 02.09.2010
Сообщений: 547

Контейнер Map

19.01.2012, 13:49. Показов 3867. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем есть такой код:

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
package test1;
import java.util.*;
 
abstract class Pet{
    String Name;
    public Pet(String n){
        Name=n;
    }
    public Pet(){}
    public void Pr(){
        System.out.println(this.Name);
    }
}
class Cat extends Pet{
    public Cat(String n){
        Name = n;
    }
    
}
class Dog extends Pet{
    public Dog(String n){
        Name = n;
    }
}
public class Test1 {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Map<String,Pet> m = new HashMap<String,Pet>();
        m.put("My Cat", new Cat("Molly"));
        m.put("My Dog", new Dog("Puppy"));
        System.out.println(m);
        
    }
}
Надо чтобы при выводе Map, мне выдавалась строка вида MyCat = Cat Molly. Сейчас выдается так

{My Cat=test1.Cat@6eb38a, My Dog=test1.Dog@1cd2e5f}
Что-то не соображу как это к карте привязать, если бы просто обьект вывести надо было бы то нет проблем.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.01.2012, 13:49
Ответы с готовыми решениями:

Прошу доработать контейнер map
Реализовывал контейнер map на основе красно-чёрного дерева, но не получается исправить следующее: 1) Убрать передачу самого контейнера...

Контейнер JFrame
При добавлении на контейнер сначала одной, а потом другой JPanel'и фокус остается на нижней (что странно). setFocusable(true) не...

Контейнер сервлетов
Здравствуйте, извините за дурацкий вопрос. По учебе делаю веб приложение, на сервере apache tomcat 7. С помощью встроенного в IDE...

6
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
19.01.2012, 14:08
Я думаю лучше всего будет перегрузить HashMap
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class MyHashMap<K,V> extends HashMap<K, V> {
    @Override
    public String toString() {
        String lineSeparator = System.getProperty("line.separator");
        StringBuilder sb = new StringBuilder();
        Set<Entry<K, V>> entrySet = this.entrySet();
        
        for (Entry<K, V> v : entrySet)
            sb.append(v.getKey().toString())
              .append(" = ")
              .append(v.getValue().toString())
              .append(lineSeparator);
        
        return sb.toString();
    }
}
или же написать свой статический метод для преобразования в строку.
1
 Аватар для Filislav
339 / 285 / 62
Регистрация: 02.09.2010
Сообщений: 547
19.01.2012, 14:11  [ТС]
Ругается на Set<Entry<K, V>> entrySet = this.entrySet();
Типа Entry not public in Java
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
19.01.2012, 14:17
добавьте импорт:
Java
1
import java.util.Map.Entry;
1
 Аватар для Filislav
339 / 285 / 62
Регистрация: 02.09.2010
Сообщений: 547
20.01.2012, 10:34  [ТС]
В общем не сильно помогло, код получился такой:

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
package test1;
import java.util.*;
import java.util.Map.Entry;
 
abstract class Pet{
    String Name;
    public Pet(String n){
        Name=n;
    }
    public Pet(){}
    public void Pr(){
        System.out.println(this.Name);
    }
}
class Cat extends Pet{
    public Cat(String n){
        Name = n;
    }
    
}
class Dog extends Pet{
    public Dog(String n){
        Name = n;
    }
}
class MyHashMap<K,V> extends HashMap<K, V> {
    @Override
    public String toString() {
        String lineSeparator = System.getProperty("line.separator");
        StringBuilder sb = new StringBuilder();
        Set<Entry<K, V>> entrySet = this.entrySet();
        
        for (Entry<K, V> v : entrySet)
            sb.append(v.getKey().toString())
              .append(" = ")
              .append(v.getValue().toString())
              .append(lineSeparator);
        
        return sb.toString();
    }
}
 
public class Test1 {
 
    
        
    
    public static void main(String[] args) {
        Map<String,Pet> m = new MyHashMap<String,Pet>();
        m.put("My Cat", new Cat("Molly"));
        m.put("My Dog", new Dog("Puppy"));
        System.out.println(m);
        
    }
}
а результат такой:

My Cat = test1.Cat@30c221
My Dog = test1.Dog@119298d
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
20.01.2012, 10:38
в ваших классах тоже надо перегрузить метод toString() - чтобы java знала как его выводить
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
abstract class Pet{
    private String Name;
    public Pet(String n){
        Name=n;
    }
    public Pet(){}
    @Override
    public String toString() {
        return this.Name;
    }
}
class Cat extends Pet{
    public Cat(String n){
        super(n);
    }
    @Override
    public String toString() {
        return "Cat " + super.toString();
    }
}
class Dog extends Pet{
    public Dog(String n){
        super(n);
    }
    @Override
    public String toString() {
        return "Dog " + super.toString();
    }
}
1
 Аватар для Filislav
339 / 285 / 62
Регистрация: 02.09.2010
Сообщений: 547
20.01.2012, 11:26  [ТС]
Спасибо. Все заработало.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.01.2012, 11:26
Помогаю со студенческими работами здесь

Возможно ли создать контейнер std::map, в котором в качестве значения была бы ссылка на std::map?
Здравствуйте. Возможно ли создать контейнер std::map, в котором в качестве значения была бы ссылка на std map? Например: std::map...

Контейнер map
Почему нельзя писать route? Строки 4,6. bool search(const map&lt;int, set&lt;string&gt;&gt;&amp; route, const set&lt;string&gt;&amp; vstr) { for (int i...

Контейнер map
в программе используется ассоциативный массив, идентификатором которого являются символы проблема в том что появляется элемент с...

Контейнер map
подскажите пожалуйста, как можно заполнить контейнер map с клавиатуры ?

Контейнер map
Здравствуйте, работаю с контейнером map, анализирую текст, получаю записи типа &quot;слово: число его появлений в тексте&quot;. Хотелось бы...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru