1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Получить индекс объекта в Set

Тема в разделе "Разработка плагинов для новичков", создана пользователем Energy warrior, 11 авг 2018.

Статус темы:
Закрыта.
  1. Автор темы
    Energy warrior

    Energy warrior Активный участник Пользователь

    Баллы:
    76
    Помогите плиз.
     
  2. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    set.contains(o)
     
  3. Автор темы
    Energy warrior

    Energy warrior Активный участник Пользователь

    Баллы:
    76
    Это проверка содержания объекта. А мне надо получить его индекс.
     
  4. Cool_boy

    Cool_boy Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Set тебе не List. Спроси в гугла если хочешь подробностей, на stackoverflow всегда ответы на такие вопросы есть
     
  5. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Множество (Set) не имеет предопределённого порядка, соответственно к его содержимому неприменимо понятие "индекс".
     
  6. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Код:
        public static <T> T getIndex(Set<T> sets, int i) {
            int x = 0;
            for(Object set : sets) {
                if(x==i) {
                    return (T) set;
                }
                x++;
            }
            throw new IndexOutOfBoundsException();
        }
    Но это сработает только на LinkedHashSet. Простой HashSet не имеет порядка.
     
  7. Автор темы
    Energy warrior

    Energy warrior Активный участник Пользователь

    Баллы:
    76
    Я думаю если прикастовать интерфейс set к linkedhashset то можно что-то получить.
     
  8. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Вот те же дал решение. Юзаешь Set<String> sets = new LinkedHashSet<String>();. Все.
    А простой HashSet не имеет порядка и выдаст рандомную последовательность при переборе..
     
  9. Cool_boy

    Cool_boy Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Юзать List ТС'у религия не позволит? :rolleyes:
     
  10. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Наверно, хз.
     
  11. Автор темы
    Energy warrior

    Energy warrior Активный участник Пользователь

    Баллы:
    76
    Не поверишь, позволит. Я уже всё листом и без сетов сделал. Сделал класс для хранения данных сделал метод, который будет индексы char'ов делать и сделал лист этих классов. Через foreach достал нужный объект и всё.P.s Просто делаю утилиту для создания крафтов с ItemStack'ами, закрываю тему! P.s.s Блин, Stream API удобная штука.
     
  12. Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    96
  13. Автор темы
    Energy warrior

    Energy warrior Активный участник Пользователь

    Баллы:
    76
    Велосипед велосипедом, но кейсы я не делаю. Я уложился в 2 класса. ну и 1 интерфейс но это вспомогательное.
     
  14. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Могу подарить удобный метод

    Код:
        public static void addRecipe(Plugin plugin, ItemStack stack, ItemStack[] istack) {
            ShapedRecipe rc = new ShapedRecipe(new NamespacedKey(plugin, UUID.randomUUID().toString()), stack);
            rc.shape("012", "345", "678");
            for (int i = 0; i < 9; i++) {
                if (istack[i] != null && istack[i].getType() != Material.AIR)
                    rc.setIngredient(String.valueOf(i).toCharArray()[0], istack[i].getType());
            }
            Bukkit.getServer().addRecipe(rc);
        }
     
  15. Автор темы
    Energy warrior

    Energy warrior Активный участник Пользователь

    Баллы:
    76
    Спасибо за штуку. А то я вообще не мог понять что это за фигота.
     
Статус темы:
Закрыта.

Поделиться этой страницей