Как вставить в массив строк Java, как правильно найти индекс, доступный логический метод, частота элемента

#java #arrays #string

#java #массивы #строка

Вопрос:

У меня возникают трудности с этими методами в моем коде, к сожалению, они должны быть строковыми массивами.

(часть кода, которую я не получил)

 import java.util.Scanner;

public class SortedStringArray {
    private Scanner input = new Scanner(System.in);
    private String[] list = new String[10];

    // default
    public SortedStringArray() {
        String[] list = new String[10];
    }

    // initial
    public SortedStringArray(int initialCapacity) {
        String[] list = new String[initialCapacity = input.nextInt()];
    }

    // insert
    public void insertItem(String item) {
        int i = list.length;
        int n =   i;
        String[] list2 = new String[n];
        for (int cnt = 0; cnt < list.length; cnt  ) {
            list2[cnt] = list[cnt];
        }

    }

    // print
    public void print() {
        System.out.println(list);
    }

    // isAvailable
    public boolean isAvailable(String item) {

        return true;
    }

    // get index
    public int getIndex(String item) {
        int index = -1;
        for(int i=0; i < list.length; i  ) {
            index = i;
            break;
        }
        return -1;
    }

    // delete
    public void delete(int index) {
        System.out.println("Deleting an Item: ");
        String item = input.next();
        // not available
        if (list == null || index < 0 || index >= list.length) {
            System.out.println(item   " is NOT available in sorted array to delete !");
        }
        String[] list2 = new String[list.length - 1];
        for (int i = 0, k = 0; i < list.length; i  ) {
            if (i == index) {
                continue;
            }
            list2[k  ] = list[i];
        }

        // return array
        System.out.println(item   " is deleted from sorted string array !");
    }

    // size
    public int size() {
        return list.length;
    }
    // frequency of item

    public int frequencyOfItem(String item) {

    }
}
  

Текущий отсортированный массив размером: 24
A A A F H H I J K K M M M N O O O Q R X X Y Z Z

Поиск элемента: G НЕДОСТУПЕН в отсортированном строковом массиве

Удаление элемента: R удаляется из отсортированного массива строк!

Текущий отсортированный массив размером: 23 A A A F H H I J K K M M M N O O O Q X X Y Z Z

Частота элемента: количество вхождений L равно 0

Комментарии:

1. Почему бы вам не использовать ArrayList вместо этого? В любом случае он поддерживается массивом объектов. И в нем есть большинство методов, которые вам нужны.

2. В чем ваша проблема?

3. Предполагается, что не использовать ArrayList будет непросто.

4. Целая куча вещей, в основном, как выполнить метод isAvailable и метод frequencyOfItem

Ответ №1:

Если это сложно, вот несколько советов:

  • isAvailable() метод — просто выполните итерацию по вашему массиву и сравните строки с equals() методом. Если вы найдете один — верните true , в противном случае — false .
  • frequencyOfItem() метод — такой же, как указано выше, но вам также понадобится счетчик для подсчета количества раз equals() , когда метод вернул true . Просто верните это число.
  • delete() метод — сдвиньте все значения с правой стороны удаляемого объекта влево (их новые индексы (i) будут i — 1). Используйте поле int типа для хранения количества значений в вашем списке массивов. ( list.length() != size() ).
  • insertItem() — найдите правильный индекс для вставки (это отсортированный массив, верно?), сдвиньте все значения, начиная с найденного индекса, вправо (i 1). Вставьте новый элемент в найденный индекс. Примечание: вам придется перестроить массив, если для новых элементов недостаточно места. Взгляните на Arrays.copyOf() метод.