Переделать ArrayList в коде под обычный массив

256
18 декабря 2021, 15:30

Вечер добрый господа, вопрос в том, как переделать мне мой код чтобы в нем вообще не встречался ArrayList вообще, а вместо него использовать обычный массив.

public class Callboard {
    private ArrayList<Author> authors;
    private ArrayList<Message> messages;
    public Callboard() {
        authors = new ArrayList<>();
        messages = new ArrayList<>();
    }
    /* --Метод SaveMassage сохраняет отправленное сообщение и возвращает true обратно если пользователь был ранее зарегистрирован,
        если нет, то метод не сохраняет сообщение и возвращает false; */
    public boolean SaveMassage(Message message) {
        if (message == null) return false;
        for (Author _author : authors) {
            if (_author.getName().equals(message.getAuthor().getName())) {
                messages.add(message);
                return true;
            }
        }
        return false;
    }
    /* --Метод regUser сохраняет отправленного пользователя и возвращает true, если ни один другой пользователь с подобным именем
        не был зарегистрирован до этого. В противном случае метод не сохраняет пользователя и возвращает false. */
    public boolean regUser(Author author) {
        if (author == null) return false;
        for (Author _author : authors) {
            if (_author.getName().equals(author.getName())) {
                return false;
            }
        }
        authors.add(author);
        return true;
    }
    /* -- Метод findUser ищет пользователя с заданным именем зарегистрированного ранее" на доске обьявлений" и возвращает этого пользователя.
        Если пользователь с таким именем не существует, то метод возвращает null обратно. */
    public Author findUser(String name) {
        if (name.length() < 1) return null;
        for (Author _author : authors) {
            if (_author.getName().equals(name)) {
                return _author;
            }
        }
        return null;
    }
    /* -- Метод findMassages для поиска сообщений. Этот метод возвращает массив хранимых сообщений, чья тема или сообщение содержит
        переданную строку поиска (в качестве подстроки)(полу-String). Написание с большой или маленькой буквы должно быть проигнориванно.
        Если ни одно сообщение не удовлетворяет ранее упомянотому критерию, то метод должен вернуть пустой массив(не null)(Просто пустой массив). */
    public ArrayList<Message> findMassages(String str) {
        ArrayList<Message> result = new ArrayList<>();
        for (Message message : messages) {
            if (message.getTheme().toLowerCase().contains(str.toLowerCase())){
                result.add(message);
            }
        }
        return result;
    }
    /* -Методы возвращают количество сообщений соответственно зарегистрированных пользователей. */
    public int СMassages(){
        return messages.size();
    }
    public int CAutors(){
        return authors.size();
    }
}
Answer 1

Пожалуйста, перестаньте ДУБЛИРОВАТЬ КОД и придерживайтесь правил именования переменных и методов!!! В остальном реализация может быть примерно такая (хотя это хуже, чем использование коллекции и я не знаю, зачем это вам):

import java.util.Arrays;
public class Callboard {
    private Author[] authors;
    private Message[] messages;
    public Callboard() {
        authors = new Author[0];
        messages = new Message[0];
    }
    /* --Метод SaveMassage сохраняет отправленное сообщение и возвращает true обратно если пользователь был ранее зарегистрирован,
        если нет, то метод не сохраняет сообщение и возвращает false; */
    public boolean saveMassage(Message message) {
        return message == null || message.getAuthor() == null || findUser(message.getAuthor().getName()) == null 
                ? false : addElementToArray(messages, message);
    }
    /* --Метод regUser сохраняет отправленного пользователя и возвращает true, если ни один другой пользователь с подобным именем
        не был зарегистрирован до этого. В противном случае метод не сохраняет пользователя и возвращает false. */
    public boolean regUser(Author author) {
        return author == null || findUser(author.getName()) == null 
                ? false : addElementToArray(authors, author);
    }
    /* -- Метод findUser ищет пользователя с заданным именем зарегистрированного ранее" на доске обьявлений" и возвращает этого пользователя.
        Если пользователь с таким именем не существует, то метод возвращает null обратно. */
    public Author findUser(String name) {
        return name==null ? null : Arrays.stream(authors)
                .filter(author -> author.getName().equals(name))
                .findAny().orElse(null);
    }
    /* -- Метод findMassages для поиска сообщений. Этот метод возвращает массив хранимых сообщений, чья тема или сообщение содержит
        переданную строку поиска (в качестве подстроки)(полу-String). Написание с большой или маленькой буквы должно быть проигнориванно.
        Если ни одно сообщение не удовлетворяет ранее упомянотому критерию, то метод должен вернуть пустой массив(не null)(Просто пустой массив). */
    public Message[] findMassages(final String str) {
        return Arrays.stream(messages)
                .filter(message -> message.getTheme().toLowerCase().contains(str.toLowerCase()))
                .toArray(Message[]::new);
    }
    /* -Методы возвращают количество сообщений соответственно зарегистрированных пользователей. */
    public int cMassages() {
        return messages.length;
    }
    public int cAutors() {
        return authors.length;
    }
    private <T> boolean addElementToArray(T [] array, T t){
        array = Arrays.copyOf(array, array.length + 1);
        array[array.length - 1] = t;
        return true;
    }
}
READ ALSO
Как запустить установку .apk из кода?

Как запустить установку .apk из кода?

для обновления приложения скачиваю apk'шку и пытаюсь запустить её:

82
НЕ могу понять, как сменить цвет в js?

НЕ могу понять, как сменить цвет в js?

Есть скрипт https://widgetblackairpods

153
Класс *.cpp, представляющий java.lang.Object в JVM

Класс *.cpp, представляющий java.lang.Object в JVM

пытаюсь найти в исходниках JDK класс/файл с расширением *cpp, который представляет джавовый объект (java

229
Как сделать кнопку двух цветов

Как сделать кнопку двух цветов

Привет помогите с css для кнопки, как можно сделать такую же кнопку

165