Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как добавить в HashSet объекты класса Color? 
V
    Опции темы
natika
Дата 5.4.2014, 02:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 27.3.2014

Репутация: нет
Всего: нет



Подскажите пожалуйста почему я не могу добавить объекты класса Color в HashSet? Eclipse выдает ошибку Exception in thread "main" java.lang.ClassCastException: java.awt.Color cannot be cast to java.lang.Comparable
at java.util.TreeMap.compare(Unknown Source)
at java.util.TreeMap.put(Unknown Source)
at java.util.TreeSet.add(Unknown Source)


 
Код
import java.awt.Color;
 import java.util.TreeSet;



public class SetColor {



static HashSet<Color> tree = new HashSet<Color>();


public static HashSet<Color> set(Color a){


tree.add(Color.BLACK);
tree.add(Color.BLUE);
tree.add(Color.CYAN);

return tree;
}
}

PM MAIL   Вверх
Pawl
Дата 5.4.2014, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 649
Регистрация: 22.4.2008
Где: Витебск

Репутация: 7
Всего: 28



Цитата(natika @  5.4.2014,  02:33 Найти цитируемый пост)
Подскажите пожалуйста почему я не могу добавить объекты класса Color в HashSet?

Ваш код достаточно бредовый. Зачем, к примеру, методу set параметр а? Этот параметр вообще нигде не используется. Если вы хотите просто добавить в tree 3 цвета, делайте это в конструкторе или инициализаторе, а если потом хотите добавить туда еще цвет или проверить, содержит ли tree данный цвет, вот тогда вам и понадобится метод с параметром.
Код

import java.awt.Color;
import java.util.HashSet;

public class SetColor {
    //создает и заполняет множество цветов
    @SuppressWarnings("serial")
    private HashSet<Color> tree = new HashSet<Color>() {{
        add(Color.BLACK);
        add(Color.BLUE);
        add(Color.CYAN);
    }};

    //возвращает множество цветов
    public HashSet<Color> getTree() {
        return tree;
    }

    //заменяет одно множество цветов другим
    public void setTree(HashSet<Color> tree) {
        this.tree = tree;
    }

    //добавляет цвет в множество
    public void addColor(Color a){
        tree.add(a);
    }

    //проверяет, есть ли данный цвет в множестве
    public boolean containsColor(Color a) {
        return tree.contains(a);
    }

    public static void main(String...args) {
        //создаем тёмно-серый цвет
        Color a = Color.DARK_GRAY;
        // создаём объект класса SetColor
        SetColor setColor = new SetColor();
        //добавляем цвет в множество
        setColor.addColor(a);
        //выводим на консоль цвета из множества
        setColor.getTree().forEach(System.out::println);
        //выводим информацию, есть ли в множестве цвет а
        System.out.println(setColor.containsColor(a));
        //создаем новое множество цветов
        @SuppressWarnings("serial")
        HashSet<Color> newTree = new HashSet<Color>() {{
            add(Color.GREEN);
            add(Color.LIGHT_GRAY);
            add(Color.MAGENTA);
        }};
        //меняем множество в объекте setColor на newTree
        setColor.setTree(newTree);
        //выводим на консоль новое множество
        setColor.getTree().forEach(System.out::println);
    }
}

Ну, как-то так...

Это сообщение отредактировал(а) Pawl - 5.4.2014, 07:47


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
natika
Дата 5.4.2014, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 27.3.2014

Репутация: нет
Всего: нет



Цитата(Pawl @ 5.4.2014,  07:32)
Цитата(natika @  5.4.2014,  02:33 Найти цитируемый пост)
Подскажите пожалуйста почему я не могу добавить объекты класса Color в HashSet?

Ваш код достаточно бредовый. Зачем, к примеру, методу set параметр а? Этот параметр вообще нигде не используется. Если вы хотите просто добавить в tree 3 цвета, делайте это в конструкторе или инициализаторе, а если потом хотите добавить туда еще цвет или проверить, содержит ли tree данный цвет, вот тогда вам и понадобится метод с параметром.
Код

import java.awt.Color;
import java.util.HashSet;

public class SetColor {
    //создает и заполняет множество цветов
    @SuppressWarnings("serial")
    private HashSet<Color> tree = new HashSet<Color>() {{
        add(Color.BLACK);
        add(Color.BLUE);
        add(Color.CYAN);
    }};

    //возвращает множество цветов
    public HashSet<Color> getTree() {
        return tree;
    }

    //заменяет одно множество цветов другим
    public void setTree(HashSet<Color> tree) {
        this.tree = tree;
    }

    //добавляет цвет в множество
    public void addColor(Color a){
        tree.add(a);
    }

    //проверяет, есть ли данный цвет в множестве
    public boolean containsColor(Color a) {
        return tree.contains(a);
    }

    public static void main(String...args) {
        //создаем тёмно-серый цвет
        Color a = Color.DARK_GRAY;
        // создаём объект класса SetColor
        SetColor setColor = new SetColor();
        //добавляем цвет в множество
        setColor.addColor(a);
        //выводим на консоль цвета из множества
        setColor.getTree().forEach(System.out::println);
        //выводим информацию, есть ли в множестве цвет а
        System.out.println(setColor.containsColor(a));
        //создаем новое множество цветов
        @SuppressWarnings("serial")
        HashSet<Color> newTree = new HashSet<Color>() {{
            add(Color.GREEN);
            add(Color.LIGHT_GRAY);
            add(Color.MAGENTA);
        }};
        //меняем множество в объекте setColor на newTree
        setColor.setTree(newTree);
        //выводим на консоль новое множество
        setColor.getTree().forEach(System.out::println);
    }
}

Ну, как-то так...

Спасибо!!!
PM MAIL   Вверх
Pawl
Дата 5.4.2014, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 649
Регистрация: 22.4.2008
Где: Витебск

Репутация: 7
Всего: 28



Цитата(natika @  5.4.2014,  17:03 Найти цитируемый пост)
Спасибо!!!

Сочтёмся! smile 


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0765 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.