Как объявить и добавить в список глобальных массивов?

У меня есть проект по вводу целочисленного значения в глобальный массив. Я использую ArrayList и не могу понять, как добавить значения в массив. Я не совсем уверен, как добавить целое число в массив, так как он глобальный, а функция actionPerformed локальная. Кроме того, считается ли, что массив был объявлен правильным?

private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {                                       
    int intEnter = Integer.parseInt(this.txtEnter.getText());
}                                      


public static void main(String args[]) {
    ArrayList <Integer> intMarks = new ArrayList();
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new MarksCalculator().setVisible(true);
        }
    });
}

Как насчет атрибута класса?

deHaar 17.07.2019 10:59

Если вы заботитесь о потокобезопасности для вашего глобального списка: Коллекции#synchronizedList.

Paul 17.07.2019 11:15
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
5 084
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Массив должен быть объявлен как статическое поле вашего класса.

private static ArrayList <Integer> intMarks;

private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {                                       
   int intEnter = Integer.parseInt(this.txtEnter.getText());
   intMarks.add(intEnter);
}                                      


public static void main(String args[]) {
    intMarks = new ArrayList();
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new MarksCalculator().setVisible(true);
        }
    });
}

если arraylist является глобальным, то он может быть доступен в любом месте в любой функции того же класса. в то время как вы можете добавить такие значения, как mArrayListName.add(1); то есть для массива типа int

Вы можете использовать шаблон проектирования синглтон.

public class Singleton {

private ArrayList<Object> arrayList;

private static Singleton instance;

private Singleton(){
    arrayList = new ArrayList<Object>();
}

public static Singleton getInstance(){
    if (instance == null){
        instance = new Singleton();
    }
return instance;
}

public ArrayList<Object> getArrayList() {
   return arrayList;
}
}

И вы можете добавить ценность в любом классе.

public class ExampleClass{
Singleton.getInstance().getArrayList().add(sampleObject);
}

Примечание: если вы обеспечиваете многопоточную обработку, вы можете использовать блокировка с двойной проверкой., поскольку ArrayList не является потокобезопасным.

Ответ принят как подходящий

В вашем коде arraylist intMarks не является глобальным, это локальная переменная метода main.
Чтобы сделать ее глобальной переменной, вы должны сделать ее прямой переменной вашего класса.

class ClassName{

    private static ArrayList <Integer> intMarks; 

    private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {                                       
        int intEnter = Integer.parseInt(this.txtEnter.getText());
        intMarks.add(intEnter);
    }                                      


    public static void main(String args[]) {
        intMarks = new ArrayList<>();
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new MarksCalculator().setVisible(true);
            }
        });
    }
}

Кроме того, вы должны сделать intMarks статическим, чтобы использовать его в методе main.

Другие вопросы по теме