Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 33 34 35 36 37 38 39 40 41 [42]
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
mayton
Member

Откуда: loopback
Сообщений: 40408
asv79
Ну а если в тз этого нет,то зачем выдумавать огород-вам четко сказали что от вас хотят увидеть.

Напомни твой ответ по данной задаче.
21 апр 19, 12:57    [21868150]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
asv79
Member

Откуда: Тверь
Сообщений: 789
mayton
asv79
Ну а если в тз этого нет,то зачем выдумавать огород-вам четко сказали что от вас хотят увидеть.

Напомни твой ответ по данной задаче.

Посмотри вверху там есть
21 апр 19, 13:09    [21868155]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3204
Озверин
Кстати, в целом, было интересной задачей отрефакторить метод так, чтобы не падал по стаковерфлоу.
Чет у вас, действительно, какое-то превратное понятие о рефакторинге.

1. удаляем логику из вывода
2. удаляет мусор из статических переменных
	public static void main(String args[]) {
		print(1, 10);
	}

	static boolean print(int from, int to) {
		System.out.println(from);
		boolean b = (from >= to || print(from + 1, to));
		return true;
	}

3. замечаем что LoC снизился, читаемость улучшилась
4. замечаем, что вместо глубины N нам достаточно log(N), получаем:
	public static void main(String args[]) {
		print(1, 10);
	}

	static boolean print(int from, int to) {
		System.out.println(from);
		int average = (from + 1 >> 1) + (to >> 1) + 1;
		boolean b = (from + 1 >= average || print(from + 1, average - 1));
		b = (average - 1 >= to || print(average, to));
		return true;
	}

5. поведение на границах разобрать самостоятельно
21 апр 19, 14:04    [21868187]     Ответить | Цитировать Сообщить модератору
 Re: Задачка для собеседования : ArrayList vs LinkedList  [new]
Мозговой_слизень
Member

Откуда:
Сообщений: 2955
Господа, я всю ветку не читал. А такое решение было?


        Deque<Integer> deque = new ArrayDeque<>();

        deque.offer(10);
        deque.offer(20);
        deque.offer(30);
        deque.offer(40);

        System.out.println("Reverse order:");

        for(Iterator descItr = deque.descendingIterator(); descItr.hasNext();) {
            System.out.println(descItr.next());
        }


        List<Integer> al = new LinkedList<Integer>();
        al.add(10);
        al.add(20);
        al.add(30);
        al.add(40);

        Collections.sort(al, Collections.reverseOrder());
        System.out.println("Reverse order :\n" + al);


Для ArrayList код такой же как для LinkedList.

Ну типа для каждого интерфейса есть метод, который позволяет порядок любой использовать. LinkedList имплементит два интерфейса (это и лист и очередь), следовательно менее эффективен чем "чистая" очередь (ArrayDeque). ArrayList позволяет обращаться к каждому элементу за постоянное время, независимо от размера. То есть, условно, самый оперативный при прочих равных будет ArrayList, затем ArrayDeque и потом LinkedList.
21 апр 19, 17:20    [21868257]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 33 34 35 36 37 38 39 40 41 [42]
Все форумы / Java Ответить