847

Помогу бесплатно: Java и SQL

Помогу советом изучающим Java и SQL или начинающим программистам.


Не решаю задачи, не делаю ДЗ. Только объясняю что, как и почему устроено.


Рейтинг в топку, просто хочу помочь.

Помощники

243 поста785 подписчиков

Правила сообщества

Нельзя обсуждать Политику.
Ругаться и оскорблять.

Вы смотрите срез комментариев. Показать все
0
Автор поста оценил этот комментарий
Приветствую. Есть конкретный вопрос. Как возможно сравнить несколько enum значений у меня есть некий класс в чей конструктор передаётся enum как поле, мне нужно определить что в экземпляре класса есть например три одинаковых enum.valueOf(). Я новичок, уже несколько дней бьюсь с этим :)
раскрыть ветку (8)
4
DELETED
Автор поста оценил этот комментарий

Если я правильно понял можно сделать мапу ключём в которой будет enum и значением количество вхождений.

раскрыть ветку (4)
0
Автор поста оценил этот комментарий

Да, элементы перечислений могут использовать как ключи в картах.

0
Автор поста оценил этот комментарий
Хм, а вот это интересно, спасибо за наводку
раскрыть ветку (2)
1
DELETED
Автор поста оценил этот комментарий

Более того есть специальные мапы и сеты для енумов, так как количество возможных ключей ограничено в их случае, то имеется возможность оптимизации и можно ключи в мапе вовсе не хранить, а значения хранить в ячейках массива, адресуемых порядковым номером енумного элемента - .ordinal(). Посмотрите java.util.EnumMap и java.util.EnumSet. Если вам надо хранить в качестве значений инты и инкрементить их например, то можно просто использовать массив int[], а в качестве индекса все тотже ENUM_ITEM.ordinal()

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Спасибо, покурю документацию этих коллекций
2
Автор поста оценил этот комментарий

Начиная с Джавы 8 элементы перечислений можно использовать в switch().
Я обычно делаю примерно так:

switch(enumEl):

  case enum1:

    //somecode

  break;

  case enum2:

  case enum3:

    //somecode

  break;

default:

  //some code

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Спасибо) попробую их считать в отдельную переменную и передать в switch
1
Автор поста оценил этот комментарий

enum.valueOf() будет искать элемент перечисления, название которого совпадает с переданной строкой. Допустим у нас есть перечисление enum ANIMALS{ CAT, DOG}; Если вызвать ANIMALS.valueOf("DOG"), то метод вернёт элемент перечисления DOG.


Так же для сравнения элементов перечисления можно использовать ==, так как все элементы перечисления это статические объекты, то и ссылки на них равны.

Метод object.equals() будет работать по той же причине.


Вот код класса:


public class Main {

enum ANIMALS {DOG, CAT};

public static void main(String[] args){


System.out.println(ANIMALS.valueOf("DOG"));


ANIMALS animal = ANIMALS.DOG;


if (animal == ANIMALS.DOG)

System.out.println("Равны!!!");


if (animal.equals(ANIMALS.DOG))

System.out.println("Тоже равны!!!");

}

}

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества