Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 06.11.2021
Сообщений: 80

Свой LinkedList с методами в интерфейсе

05.01.2022, 12:41. Показов 1898. Ответов 10
Метки java (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! У меня возник вопрос, нужно создать свой LinkedList с методами в интерфейсе, методы создал, но не уверен что реализация правильная, можете подсказать, все ли правильно сделано или что-то нужно исправить. Буду очень благодарен! Привожу код ниже:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public static void main(String[] args) {
        final List<Integer> list = new LinkedList<>();
 
        list.add(3);
        list.add(5);
        list.add(8);
        list.add(9);
        list.add(6);
        list.add(5);
        list.add(4);
        list.add(1);
 
        System.out.println("List: " + list);
        list.add(2, 5);
        System.out.println("List add boolean: " + list);
 
        System.out.println("Size: " + list.size());
        System.out.println("get: " + list.get(4));
 
        list.toArray();
        System.out.println("toArray: " + list);
 
        ((LinkedList<Integer>) list).pop();
        System.out.println("Pop: " + list);
 
        System.out.println("Sublist: " + list.subList(0, 5));
 
        list.remove((Integer) 3);
        System.out.println("RemoveByValue: " + list);
 
        ((LinkedList<Integer>) list).peek();
        System.out.println("Peek: " + list);
 
        list.remove(4);
        System.out.println("Remove: " + list);
        System.out.println("int Remove: " + list.remove(2));
        System.out.println("Empty: " + list.isEmpty());
 
        System.out.println("Element: " + ((LinkedList<Integer>) list).element());
 
        list.clear();
        System.out.println("Clear: " + list);
 
    }
Добавлено через 1 минуту
И привожу реализацию методов:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
public class IntLinkedList implements IntList, IntQueue, IntStack {
 
    private int size = 0;
    private Item first;
    private Item last;
 
    public IntLinkedList() {
 
    }
 
    @Override
    public void add(int value) {
        final Item l = last;
        final Item nextItem = new Item(l, value, null);
        last = l;
        if (l == null) {
            first = nextItem;
        } else
            l.next = nextItem;
        size++;
    }
 
    @Override
    public boolean add(int index, int value) {
        if (index == size) {
            add(value);
            return false;
        } else if (index < size) {
            Item lost = first;
            for (int i = 0; i < index; i++) {
                lost = lost.next;
                lost.value = value;
                return true;
            }
        } else
            System.out.println("Index doesnt exist");
        return false;
    }
 
    @Override
    public void clear() {
        first = null;
        last = null;
        size = 0;
 
    }
 
    @Override
    public int get(int index) {
        return index < size ? getItem(index).value : getItem(size - 1).value;
    }
 
    private Item getItem(int index) {
        if (index > size) {
            System.out.println("Index doesnt exist");
            return null;
        } else {
            Item x = first;
            for (int i = 0; i < index; i++)
                x = x.next;
            assert (x != null);
            return x;
        }
    }
 
 
    @Override
    public boolean isEmpty() {
        return size == 0;
    }
 
    @Override
    public boolean remove(int index) {
        if (index < size) {
            Item x = getItem(index);
 
            final Item next = x.next;
            final Item prev = x.prev;
 
            if (prev == null) {
                first = next;
            } else {
                prev.next = next;
                x.prev = null;
            }
            if (next == null) {
                last = prev;
            } else {
                next.prev = prev;
                x.next = null;
            }
            size--;
            return true;
        }
        return false;
    }
 
    @Override
    public boolean removeByValue(int value) {
        Item l = first;
        for (int i = 0; i < value; i++) {
            if (l.value == value) {
                remove(i);
                return true;
            }
            l = l.next;
        }
        return false;
    }
 
 
    @Override
    public int size() {
        return size;
    }
 
    @Override
    public IntList subList(int fromIndex, int toIndex) {
        IntLinkedList result = new IntLinkedList();
        for (int i = fromIndex; i < toIndex; i++) {
            Item x = getItem(i);
            result.add(x.value);
        }
        return result;
    }
 
    @Override
    public int[] toArray() {
        int[] result = new int[size];
        int i = 0;
        for (Item x = first; x != null; x = x.next) {
            result[i++] = x.value;
        }
        return result;
    }
 
    @Override
    public int remove() {
        final int value = first.value;
        final Item next = first.next;
 
        first = next;
        if (first == null)
            last = null;
        else
            next.prev = null;
        size--;
        return value;
    }
 
    @Override
    public int element() {
        return first.value;
    }
 
    @Override
    public int pop() {
        return last.value;
    }
 
    @Override
    public int peek() {
        int value = last.value;
        remove(size - 1);
        return value;
    }
 
 
    private static class Item {
        private Item next;
        private int value;
        private Item prev;
 
        Item(Item next, int value, Item prev) {
            this.next = next;
            this.value = value;
            this.prev = prev;
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.01.2022, 12:41
Ответы с готовыми решениями:

Свой LinkedList
Здравствуйте! Задали написать LinkedList. В итоге вот, что у меня вышло: public class LinkedList { private LinkedNode first; ...

На ваше суждение свой LinkedList
Жажду Ваших комментариев, что я сделал не так.. И что можно улучшить. Желательно не примерами кода, а тыканьем моей морды лица в очевидные...

Создать свой класс с методами и свойствами
Разработать структуру объекта &quot;Газовая колонка&quot;. Объект должен иметь не менее пяти методов и не менее трёх свойств. Разработать программу...

10
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
05.01.2022, 14:05
Садись, два
0
0 / 0 / 0
Регистрация: 06.11.2021
Сообщений: 80
05.01.2022, 14:37  [ТС]
А в чем проблема? Где и что не правильно?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
05.01.2022, 15:13
вот ты привел два куска кода, объясни как они связаны друг с другом.
0
0 / 0 / 0
Регистрация: 06.11.2021
Сообщений: 80
05.01.2022, 16:06  [ТС]
Помогите пожалуйста!

Добавлено через 44 секунды
А задание звучит так:

Написать интерфейс IntList и его реализацию IntLinkedList, который также должен реализовывать интерфейсы IntQueue и IntStack.

Добавлено через 17 минут
Первый это реализация, а второй это методы
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
05.01.2022, 20:48
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public interface IntList {
 
    int getSize();
 
    boolean isEmpty();
 
    int get(int index);
 
    void set(int index, int value);
 
    // add element to the end of the list
    void add(int value);
 
    void remove(int index);
}
Java
1
2
3
4
5
6
7
8
public interface IntQueue {
 
    int peek();
 
    int poll();
 
    void add(int value);
}
Java
1
2
3
4
5
6
7
8
public interface IntStack {
 
    int pop();
 
    void push(int value);
 
    int peek();
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
public class LinkedIntList implements IntList, IntQueue, IntStack {
 
    private int size;
    private final NodeBase base;
 
    LinkedIntList() {
        size = 0;
        base = new NodeBase();
    }
 
    private Node findByIndex(int index) {
        if (index >= size) {
            throw new IllegalStateException("List index is out of bounds, my Lord.");
        }
        NodeBase result = base.next;
        for (; index > 0; --index) {
            result = result.next;
        }
        return (Node)result;
    }
 
    @Override
    public int getSize() {
        return size;
    }
 
    @Override
    public boolean isEmpty() {
        return size == 0;
    }
 
    @Override
    public int get(int index) {
        return findByIndex(index).value;
    }
 
    @Override
    public void set(int index, int value) {
        findByIndex(index).value = value;
    }
 
    @Override
    public int pop() {
        if (isEmpty()) {
            throw new IllegalStateException("I cannot pop, for the list is empty, my Lord.");
        }
        try {
            return ((Node) base.next).value;
        } finally {
            // call me lazy, but I love this inadequate usage of finally approach.
            base.next.remove();
            --size;
        }
    }
 
    @Override
    public void push(int value) {
        new Node(base.next, value);
        ++size;
    }
 
    @Override
    public int peek() {
        if (isEmpty()) {
            throw new IllegalStateException("I cannot peek, for the list is empty, my Lord.");
        }
        return ((Node) base.next).value;
    }
 
    @Override
    public int poll() {
        if (isEmpty()) {
            throw new IllegalStateException("I cannot pop, for the list is empty, my Lord.");
        }
        try {
            return ((Node) base.prev).value;
        } finally {
            // call me lazy, but I love this inadequate usage of finally approach.
            base.prev.remove();
            --size;
        }
    }
 
    @Override
    public void add(int value) {
        new Node(base, value);
        ++size;
    }
 
    @Override
    public void remove(int index) {
        findByIndex(index).remove();
    }
 
    private static class NodeBase {
        public NodeBase next;
        public NodeBase prev;
 
        NodeBase() {
            next = prev = this;
        }
 
        NodeBase(NodeBase before) {
            next = before;
            prev = before.prev;
            next.prev = prev.next = this;
        }
 
        void remove() {
            prev.next = next;
            next.prev = prev;
        }
    }
 
    private static class Node extends NodeBase {
        int value;
 
        Node(NodeBase before, int value) {
            super(before);
            this.value = value;
        }
    }
}
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
06.01.2022, 00:08
Цитата Сообщение от Petr Kracovis Посмотреть сообщение
Помогите пожалуйста!
0
0 / 0 / 0
Регистрация: 06.11.2021
Сообщений: 80
10.01.2022, 18:45  [ТС]
А реализацию делать так?

IntLinkedList list = new IntLinkedList();
list.add(#);
list.add(#);
list.add(#);

Добавлено через 38 секунд
Потому что как то тяжело даётся...
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
11.01.2022, 02:34
Цитата Сообщение от Petr Kracovis Посмотреть сообщение
А реализацию делать так?
Вы попробуйте. Компилятор вам подскажет.
0
0 / 0 / 0
Регистрация: 06.11.2021
Сообщений: 80
13.01.2022, 00:08  [ТС]
Компилятор ругается....NullPounterException на некоторых методах
0
 Аватар для StepFather322
365 / 252 / 113
Регистрация: 07.10.2017
Сообщений: 1,330
13.01.2022, 00:27
Цитата Сообщение от Petr Kracovis Посмотреть сообщение
NullPounterException на некоторых методах
ну так открывай дебагер и смотри в чем проблема
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.01.2022, 00:27
Помогаю со студенческими работами здесь

LinkedList
Имеем ЛинкедЛист кот-ый содержит допустим 15 элементов.Как вывести последние 10 элементов, а остальное не трогать?

LinkedList
Доброго времени суток! Обращаюсь к людям с просьбой о помощи! По задании нужно написать интерфейс IntList и его реализацию IntLinkedList,...

Сортировка LinkedList
Коллеги, Весь мозг сломал помогите плиз мне с сортировкой, нужны выстроить элементы так чтобы текущий элемент был связан с предыдущим...

Альтернатива LinkedList
Подскажите как переделать код java se в j2me import java.util.LinkedList; public class Calc { static boolean isDelim(char c) { ...

C linkedlist в arraylist
Доброго времени суток! подскажите пожалуйста, как правильно организовать выбор не повторяющихся элементов c linkedlist в arraylist? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru