«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Структуры данных: массивы

Структуры данных: массивы

Опубликовано 17 августа 2024 г.
Просматривать:596

Data Structures: Arrays

Статический массив

Массив — это линейная структура данных, в которой все элементы расположены последовательно. Это коллекция элементов одного и того же типа данных, хранящаяся в непрерывных местах памяти.

Инициализация

public class Array {
    private T[] self;
    private int size;
    @SuppressWarnings("unchecked")
    public Array(int size) {
        if (size 



В классе Core Array мы собираемся хранить размер массива и общий скелет для его инициализации. В конструкторе мы запрашиваем размер массива, создаем объект и приводим его в желаемый массив.

Установить метод

public void set(T item, int index) {
        if (index >= this.size || index 



Этот метод запрашивает сохранение элемента в массиве и индексе, в котором этот элемент должен быть сохранен.

Получить метод

public T get(int index) {
        if (index >= this.size || index 



Метод Get запрашивает индекс и извлекает элемент из этого индекса.

Метод печати

public void print() {
        for (int i = 0; i 



Метод печати просто печатает все элементы массива в одну строку с пробелом, разделяющим каждый элемент между ними.

Сортированный массив

Массивы, но имеющие возможность сортировки элементов.

Инициализация

public class SortedArray> {
    private T[] array;
    private int size;
    private final int maxSize;
    @SuppressWarnings("unchecked")
    public SortedArray(int maxSize) {
        if (maxSize 



В классе отсортированного массива мы собираемся хранить размер массива, а также запрашивать максимальный размер массива и общий скелет для инициализации массива. В конструкторе мы запрашиваем максимальный размер массива, создаем объект и приводим его в желаемый массив.

Геттеры

public int length() {
        return this.size;
    }
 public int maxLength() {
        return this.maxSize;
    }
 public T get(int index) {
        if (index = this.size) {
            throw new IndexOutOfBoundsException("Index out of 
 bounds: "   index);
        }
        return this.array[index];
    }

Метод вставки

private int findInsertionPosition(T item) {
        int left = 0;
        int right = size - 1;
        while (left = this.maxSize) {
            throw new IllegalStateException("The array is already full");
        }

        int position = findInsertionPosition(item);

        for (int i = size; i > position; i--) {
            this.array[i] = this.array[i - 1];
        }
        this.array[position] = item;
        size  ;
    }

Метод Insert вставляет элемент на его позицию в отсортированном виде.

Метод удаления

    public void delete(T item) {
        int index = binarySearch(item);
        if (index == -1) {
            throw new IllegalArgumentException("Unable to delete element "   item   ": the entry is not in the array");
        }

        for (int i = index; i 



Методы поиска

private int binarySearch(T target) {
        int left = 0;
        int right = size - 1;
        while (left 



Метод траверса

public void traverse(Callback callback) {
        for (int i = 0; i 



Интерфейс обратного вызова

public interface Callback {
        void call(T item);
    }

Использование интерфейса обратного вызова при обходе

public class UppercaseCallback implements UnsortedArray.Callback {
    @Override
    public void call(String item) {
        System.out.println(item.toUpperCase());
    }
}

Несортированный массив

Почти то же самое, что и сверху
Инициализация и геттеры одинаковы.

Метод вставки

public void insert(T item) {
        if (this.size >= this.maxSize) {
            throw new IllegalStateException("The array is already full");
        } else {
            this.self[this.size] = item;
            this.size  ;
        }
    }

Метод удаления такой же

Метод поиска

public Integer find(T target) {
        for (int i = 0; i 



Динамический массив

Динамический массив похож на списки массивов или списки.

Инициализация

public class DynamicArray {
    private T[] array;
    private int size;
    private int capacity;

    @SuppressWarnings("unchecked")
    public DynamicArray(int initialCapacity) {
        if (initialCapacity 



Вставить метод

private void resize(int newCapacity) {
        @SuppressWarnings("unchecked")
        T[] newArray = (T[]) new Object[newCapacity];
        for (int i = 0; i = capacity) {
            resize(2 * capacity);
        }
        array[size  ] = item;
    }

Удалить метод

public void delete(T item) {
        int index = find(item);
        if (index == -1) {
            throw new IllegalArgumentException("Item not found: "   item);
        }

        for (int i = index; i  1 && size 



Все остальное то же самое.
Надеюсь, это поможет в работе с массивами. Удачи!

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/abdulghani002/data-structures-arrays-1ad4?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3