Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/89: Рейтинг темы: голосов - 89, средняя оценка - 4.89
1 / 1 / 1
Регистрация: 01.12.2012
Сообщений: 116

Реализация ArrayList

10.11.2014, 12:49. Показов 18660. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне нужно написать собственную реализацию динамического массива MyArrayList, содержащего целые числа.
Можете подсказать с чего начинать, какие должны быть поля,конструктор.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.11.2014, 12:49
Ответы с готовыми решениями:

Реализация своего ArrayList
Привет. Проблема следующая: надо реализовать свой вариант ArrayList. Столкнулся с проблемой следующего характера - в мою коллекцию я...

Реализация своего ArrayList
Парни всем привет! Решаю задачу в написании своего ArrayList для учебы. Посмотрите пожалуйста и подскажите где и в каких методах у меня...

Для чего написано: ArrayList<person> people = new ArrayList<>();
package com.company; import java.util.ArrayList; import java.util.Iterator; public class Main { public static void...

14
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
10.11.2014, 13:05
С чего начать: посмотреть исходники ArrayList
Какие поля:
1. массив int-ов
2. size

Конструктор два:
1. Без параметров. Создаете массив размером 16
2. С одним параметром - int initSize. Создаете массив размером initSize.
0
1 / 1 / 1
Регистрация: 01.12.2012
Сообщений: 116
10.11.2014, 13:12  [ТС]
turbanoff, Смотря исходник там куча мне не понятных методов, переменных,полей.
Вот так как то?
Java
1
2
3
4
5
6
7
8
9
10
private int[] mas = new int[];
private int size;
 
public MyArrayList(){
new int[16];
}
 
public MyArrayList(int initSize){
new int[initSize];
}
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
10.11.2014, 14:58
Kolya1114, Вам нужно знать хотя бы основы Java чтобы сделать это задание.
0
20 / 20 / 9
Регистрация: 23.09.2013
Сообщений: 329
10.11.2014, 14:59
private int[] mas = new int[];
здесь ошибка,

можете почитать про Creating, Initializing, and Accessing an Array в
https://docs.oracle.com/javase... rrays.html

public MyArrayList(){
new int[16];
}
здесь также ошибка, про "Providing Constructors for Your Classes" можете почитать здесь:

https://docs.oracle.com/javase... ctors.html

ArrayList реализует интерфейс List

https://docs.oracle.com/javase... od_summary

смотрите на методы и реализовывайте свои.

Важные методы - add, set, get...
0
1 / 1 / 1
Регистрация: 01.12.2012
Сообщений: 116
10.11.2014, 15:36  [ТС]
virtus, Нужно вот так?

Java
1
2
3
4
5
6
7
private static int size;
static Object[] name;
 
    public MyArrayList(int initSize){
        super();
        this.name=new Object[initSize];
    }
Добавлено через 2 минуты
Вот что надо реализовать
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public void add(int value){
    }
    public int get(int index){
    }
    public boolean set(int index, int value){
    }
    public boolean add(int index, int value){
    }
    public int indexOf(int value){
    }
    public int size(){
    }
    public boolean remove(int index){
    }
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
10.11.2014, 17:01
Kolya1114, Зачем вы Object сюда приплели? У вам int-ы же должны быть.
0
1 / 1 / 1
Регистрация: 01.12.2012
Сообщений: 116
10.11.2014, 20:13  [ТС]
turbanoff, просто я смотрю в исходник, потом что вы говорите, и полная каша в голове

Вот так?
Java
1
2
3
4
5
6
7
8
9
10
private int[] mas;
private int size;
 
public MyArrayList(){
this.mas=new int[16];
}
 
public MyArrayList(int initSize){
this.mas=new int[initSize];
}
0
69 / 69 / 39
Регистрация: 22.05.2014
Сообщений: 311
10.11.2014, 21:43
Лучший ответ Сообщение было отмечено Kolya1114 как решение

Решение

как-то так
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
/*
public boolean add(int index, int value){
        }
 
public boolean remove(int index){
        }*/
 
public class MyArrayList {
    // массив елементов
    private int[] elements;
 
    // сколько елементов в данный момент
    // Пояснение: массив может быть на 16 елементов, но в него добавили только 3 елемента
    // соответственно size будет равен 3
    private int size;
 
    // переменная, которая показывает в какой индекс добавлять новый елемент
    private int index;
 
    private static final int DEFAULT_CAPACITY = 16;
 
    public MyArrayList() {
        elements = new int[DEFAULT_CAPACITY];
    }
 
    public MyArrayList(int capacity) {
        elements = new int[capacity];
    }
 
    public void add(int value) {
        if (index == elements.length)
            growArray();
        elements[index] = value;
        index++;
        size++;
    }
 
    // увеличить массив если в нем закончилось место
    private void growArray() {
        int[] newArray = new int[elements.length * 2];
        System.arraycopy(elements, 0, newArray, 0, index - 1);
        elements = newArray;
    }
 
    public int get(int index) {
        checkIndex(index);
        return elements[index];
    }
 
    private void checkIndex(int index) {
        if (index < 0 || index >= this.index)
            throw new IllegalArgumentException();
    }
 
    public void set(int index, int value) {
        checkIndex(index);
        elements[index] = value;
    }
 
    public int size() {
        return size;
    }
 
    // если елемента который равен value не будет, то вернуть -1
    public int indexOf(int value) {
        int result = -1;
        for (int i = 0; i < index; i++) {
            if (elements[i] == value) {
                result = i;
                break;
            }
        }
        return result;
    }
    
    public boolean add(int index, int value) {
        checkIndex(index);
        if (index == elements.length)
            growArray();
        
        System.arraycopy(elements, index, elements, index + 1, this.index - index);
        elements[index] = value;
        this.index++;
        size++;
        
        return true;
    }
    
    public boolean remove(int index) {
        checkIndex(index);
        System.arraycopy(elements, index + 1, elements, index, this.index - index);
        size--;
        this.index--;
        
        return true;
    }
}
1
1 / 1 / 1
Регистрация: 01.12.2012
Сообщений: 116
11.11.2014, 14:02  [ТС]
EdisonMiranda, а MyArrayList<E> должен иметь еще конструкторы?
Но здесь у меня ошибка "Type parameter 'E' cannot be instantiated directly"
Как Е нужно еще реализовать?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class MyArrayListE<E> implements Iterable<E> {
    private E[] elements;
 
    private int size;
 
    private int index;
 
    private static final int DEFAULT_CAPACITY = 16;
 
    public MyArrayListE() {
        elements = new E[DEFAULT_CAPACITY];
    }
 
    public MyArrayListE(int capacity) {
        elements = new E[capacity];
    }
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
11.11.2014, 17:23
Kolya1114, А откуда взялся E? Вам же для int-ов надо было.
Еще раз: посмотрите на код ArrayList. Хотя бы на конструктор. Там найдете ответы.
0
1 / 1 / 1
Регистрация: 01.12.2012
Сообщений: 116
11.11.2014, 18:53  [ТС]
turbanoff, мне еще надо сделать параметрезированый список и реализовать интерфейс Iterable.
0
69 / 69 / 39
Регистрация: 22.05.2014
Сообщений: 311
11.11.2014, 23:42
Kolya1114, ты смотрел исходник ArrayList?
0
1 / 1 / 1
Регистрация: 01.12.2012
Сообщений: 116
12.11.2014, 12:02  [ТС]
EdisonMiranda, Да, там куча всего, и вроде так не нужно делать.
Вот я не правильно параметризовал?

Java
1
2
3
4
5
6
7
8
9
 private E[] elements;
 
public MyArrayListE() {
        elements = new E[DEFAULT_CAPACITY];
    }
 
    public MyArrayListE(int capacity) {
        elements = new E[capacity];
    }
0
69 / 69 / 39
Регистрация: 22.05.2014
Сообщений: 311
12.11.2014, 16:23
Kolya1114,
Цитата Сообщение от Kolya1114 Посмотреть сообщение
elements = new E[capacity];
нельзя так

Java
1
public Object[] elements
Java
1
elements = new Object[capacity]
Java
1
public void add(E element)
Java
1
public E get(int index)
Добавлено через 1 минуту
Цитата Сообщение от Kolya1114 Посмотреть сообщение
Да, там куча всего,
да
Но там все правильно, я бы сказал по образцу
Твоя задача - выкинуть лишнее, обьединить то что там + то что писал я
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.11.2014, 16:23
Помогаю со студенческими работами здесь

Передача ArrayList в качестве параметра методу, и в дальнейшем получение свойств объектов которые хранятся в ArrayList
Всем привет. Задача следующая: a. Есть классы Fruit -&gt; Apple, Orange;(больше фруктов не надо) b. Класс Box в который можно складывать...

В чем разница между new ArrayList<String>() и new ArrayList<>()?
подскажите,знатоки,в чем разность между ArrayList &lt;String&gt; stringList = new ArrayList&lt;String&gt;(); и ArrayList &lt;String&gt;...

Обращение к элементам ArrayList, который в другом ArrayList
Здравствуйте. У меня есть arraylist типа arraylist. А уже каждый внутренний arraylist типа JTextField. У JTextField (текстовое поле)...

Как представить элементы java.ArrayList содержащие другие java.ArrayList в виде XML - XSL?
Здравствуйте Вопрос: Подскажите пожалуйста чайнику, как можно представить элементы java.ArrayList содержащие другие java.ArrayList...

Аналоги java.util.ArrayList<java.util.ArrayList<Integer>>
Подскажите, пожалуйста, аналоги java.util.ArrayList&lt;java.util.ArrayList&lt;Integer&gt;&gt;, которые 1. либо работают быстрее 2. либо потребляют...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru