• Создать коллекцию А и вставить туда элементы последовательности в произвольном порядке?

    evgeniy8705
    @evgeniy8705
    Повелитель вселенной
    // Возможно не лучшее решение, но это первое что пришло в голову, а более лучшее решение обдумывать не хочется.
    import java.util.*;
    
    public class App {
        public static void main(String[] args) {
            ArrayList<Integer> list = new ArrayList(); // Создание коллекции
    
            for (int i = 0; i < 1000000; i++) { // Заполнение коллекции последовательностью чисел от 0 до 1000000
                list.add(i);
            }
    
            Collections.shuffle(list); // организация произвольного порядка
    
            for (int i = 0; i < 10; i++) {
                System.out.println(list.get(i) + " "); // Показываем что порядок произвольный, выводя первые 10 чисел к примеру
            }
    
            Map<Integer, Boolean> map = new HashMap<>();
    
            for (int i = 0; i < list.size(); i++) {
                map.put(list.get(i), true); // Map всегда содержит только уникальные ключи
            }
    
            System.out.println(list.size() == map.size()); // Если размеры равны то это значит что в исходной коллекции элементы были уникальны
    
            list.sort(new Comparator<Integer>() {
                @Override
                public int compare(Integer a, Integer b) {
                    return a - b;
                }
            });
    
            System.out.println("Минимальный элемент: " + list.get(0));
            System.out.println("Предпоследний по величине элемент: " + list.get(list.size() - 2));
    
            ArrayList<Integer> alist = new ArrayList<>();
    
            for (int i = 0; i < list.size(); i++) {
                if (list.get(i) % 2 == 0) {
                    alist.add(list.get(i)); // Сохраняем только четные числа
                }
            }
    
            list = null;
    
            for (int i = 0; i < alist.size() / 1000; i++) { // первые 1000 элементов
                System.out.println(alist.get(i) + " "); // Выводим последовательность четных чисел
            }
        }
    }
    Ответ написан
    2 комментария
  • Как работать с большим объемом данных (2М записей) на UI?

    @Vampiro
    в 999 случаях из 1000 человек не может ничего сделать глядя на 2кк строк. Наш мозг просто не в состоянии оперировать такими объемами сразу. Треть пользователей накладывает нужный фильтр, еще треть делает сортировку по одному значимому для них столбцу, и «мотает» до нужных значений. Остальные пользуются поиском на каждую запись.

    Посмотрите к какой трети относятся ваши пользователи. Мне кажется сделать диалог-мастер с фильтром гораздо проще, чем выкабениваться с 2кк записей, 90% которых не требуются пользователю :)

    Если у вас данные не лезут в json, как вариант, можно делать дамп таблички в static-file, загружать его, а потом уже ajax-ом доводить до кондиции с бд, если база не часто обновляет записи.
    Ответ написан
    5 комментариев