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

Помогите проверка аргумента команды на равенство с элементами массива

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

Статус темы:
Закрыта.
  1. AtomicScience

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

    Баллы:
    76
    Имя в Minecraft:
    AtomicScience
    Не думаю, что у него дело дойдет до "1.6758574"
     
  2. _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Я только что замерил (Array of Strings и List of Strings) и разницы нет практически, и работает это через раз. Раз выигрывает List, раз выигрывает Array. Обработка в циклах одинаковая для каждого из участников "забега", внесены те же строки.

    Так что успокойтесь, ребят. List действительно лучше, так как удобней (это не значит, что использовать Array не надо. Все по ситуации и по нужде, конечно).
     
  3. AtomicScience

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

    Баллы:
    76
    Имя в Minecraft:
    AtomicScience
    А размер списков/массивов у тебя какой?
     
  4. aceJKE

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

    Баллы:
    123
    rofl
     
  5. _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Всунул 7 строк, которые эдентичны и в листе и в массиве.
     
  6. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    С чего бы итерация по связанному списку будет быстрее?
     
  7. AtomicScience

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

    Баллы:
    76
    Имя в Minecraft:
    AtomicScience
    Так и знал что возникнешь и начнешь докапываться.
    Ну, последовательный перебор должен быть быстрее если не массива, то ArrayList'а точно
     
  8. MrMagaChannel

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

    Баллы:
    76
    Имя в Minecraft:
    mrmagachannel
    Чет уже хрень обсуждаем, это простая задача и имеет десятки реализации и каждый не хуже другого. Пора заканчивать.
     
  9. Krutius

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

    Баллы:
    76
    Имя в Minecraft:
    MrPencilBox
    Если я скажу, что всегда использую List, то меня назовут говнокодером, верно?
     
  10. AtomicScience

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

    Баллы:
    76
    Имя в Minecraft:
    AtomicScience
    "Всегда" - очень растяжимое понятие
     
  11. MrMagaChannel

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

    Баллы:
    76
    Имя в Minecraft:
    mrmagachannel
    Напоследок несколько тестов:
    Код:
    Тест №1
    Время итерации String[] = 78
    Время итерации List<String> = 67
    Тест №2
    Время итерации String[] = 94
    Время итерации List<String> = 62
    Тест №3
    Время итерации String[] = 63
    Время итерации List<String> = 62
    Тест №4
    Время итерации String[] = 78
    Время итерации List<String> = 47
    Тест №5
    Время итерации String[] = 78
    Время итерации List<String> = 63
    Тест №6
    Время итерации String[] = 62
    Время итерации List<String> = 73
    Тест №7
    Время итерации String[] = 63
    Время итерации List<String> = 62
    Тест №8
    Время итерации String[] = 79
    Время итерации List<String> = 62
    Тест №9
    Время итерации String[] = 63
    Время итерации List<String> = 63
    Тест №10
    Время итерации String[] = 78
    Время итерации List<String> = 63
    
    Код:
    import java.util.*;
    
    public class Main {
        public static void main(String[] args) throws Exception {
            int n = 10_000_000;
            String[] array = new String[n];
            Random r = new Random();
            for (int i = 0; i < array.length; i++) {
                array[i] = String.valueOf(r.nextInt(10));
            }
            for (int i = 1; i <= 10; i++) {
                System.out.println("Тест №"+i);
                List<String> list = Arrays.asList(array);
                int count = 0;
                long startTime = System.currentTimeMillis();
                for (String s : array) {
                    if (s.equals("9")) {
                        count++;
                    }
                }
                System.out.println("Время итерации String[] = " + (System.currentTimeMillis() - startTime));
                count = 0;
                startTime = System.currentTimeMillis();
                for (String s : list) {
                    if (s.equals("9")) {
                        count++;
                    }
                }
                System.out.println("Время итерации List<String> = " + (System.currentTimeMillis() - startTime));
            }
        }
    }
    
     
  12. Krutius

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

    Баллы:
    76
    Имя в Minecraft:
    MrPencilBox
    Ещё не было ни одного проекта, в котором приходилось использовать массив вместо листа из-за скорости...
     
  13. _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Называть говнокодером человека до просмотра кода и где ты используешь лист - глупо. Ведь никто не знает, где и в каких обстоятельствах ты его используешь. Может ты еще не имел задач, где массив лучше.
     
  14. Krutius

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

    Баллы:
    76
    Имя в Minecraft:
    MrPencilBox
    В точку
     
  15. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Массив занимает непрерывную область памяти, перебор массива будет быстрее чем связанного списка.
    Та он как раз таки и предопчтительнее почти во всех случаях, кроме тех когда тебе нужен голый набор нескольких данных неизвестного кол-ва. Да и юзать яву и и беспокоиться о том, что голый массив быстрее на 1мс, как-то уж совсем тупо.
     
  16. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Итерировать LinkedList может быть медленнее из-за кеш-промахов. Нужно ходить не только по ссылкам в хип, но туда же по ссылкам за нодами самого списка. В любом случае проверка наличия элемента в массиве/любом списке будет ~ O(N), а в HashSet<String> ~ O(1).
    Но на таких размерах, как у ТС, да ваще насрать, что использовать. Не нужно заниматься преждевременной оптимизацией.
     
  17. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Ну у хеш сета если оч круто все то O(1) а так O(log(n))
     
  18. Автор темы
    Zemf4you

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

    Баллы:
    76
    Имя в Minecraft:
    zemf4you
    Мхе-хе, ну и нафлудили.
    Тему закрою, но последний вопрос: Как перенести строку в чате?
     
  19. Автор темы
    Zemf4you

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

    Баллы:
    76
    Имя в Minecraft:
    zemf4you
    не уж то каждый раз писать Bukkit.getServer().broadcastMessage()?
     
  20. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    \n
     
Статус темы:
Закрыта.

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