Ошибка конструктора ArrayList

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

ArrayList al=new ArrayList(100000);  

... который имеет начальную емкость 100000. Но программа возвращает ошибку, говоря ...

The constructor ArrayList(int) is undefined.

Чтобы убедиться, я даже искал документацию по API класса java.util.ArrayList, в которой, конечно же, говорилось ...

ArrayList​(int initialCapacity):
Constructs an empty list with the specified initial capacity.

... в его резюме конструктора.

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

The method add(List) in the type ArrayList3 is not applicable for the arguments (ArrayList). 

Мой полный код здесь:

import java.util.*;
public class ArrayList3 {
        public static void main(String[] args) {
                ArrayList al=new ArrayList(100000);
                LinkedList ll=new LinkedList();
                System.out.println("ArrayList: "+add(al));
                System.out.println("LinkedList: "+add(ll));
        }

        public static long add(List list) {
            long start = System.currentTimeMillis();
            for(int i=0;i<10000;i++) 
                list.add(i+" ");
            long end = System.currentTimeMillis();
            return start - end;
        }
}

В чем будет проблема и что я мог пропустить? Заранее большое спасибо!

Компилируется нормально. Невозможно воспроизвести вашу ошибку.

Nikolas Charalambidis 06.06.2018 11:50

Очистить и восстановить?

Sweeper 06.06.2018 11:51

Работает нормально на Java 8.

soufrk 06.06.2018 11:52

У вас есть класс ArrayList3. Я предполагаю, что у вас есть (или был в какой-то момент) собственный класс ArrayList.

Eran 06.06.2018 11:52

У вас есть другой класс с именем ArrayList в том же исходном файле или в том же пакете, что и ArrayList3 (неудивительно, поскольку класс, который вы здесь показываете, называется ArrayList3)

Erwin Bolwidt 06.06.2018 11:53

Тоже не могу воспроизвести. Это ошибка компиляции или времени выполнения?

J_D 06.06.2018 11:54
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
6
220
1

Ответы 1

У вас есть другой класс ArrayList в вашем пакете, и он конфликтует с java.util.ArrayList. Либо это настоящий класс, либо, может быть, результат предыдущей компиляции.

Обратите внимание, что это не будет компилироваться из-за конфликтующих имен,

package stackOv;    
import java.util.*;
public class ArrayList {
    public static void main(String[] args) {
        ArrayList al=new ArrayList(100000);
    }
}

пока это будет компилироваться, поскольку использование полностью определенных имен разрешает конфликт

import java.util.*;
public class ArrayList {
    public static void main(String[] args) {
        java.util.ArrayList al=new java.util.ArrayList(100000);
    }
}

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

J_D 06.06.2018 12:15

Спасибо, действительно был класс ArrayList, который я создал в том же пакете, и после того, как я его удалил, первая проблема была решена; но я все еще не могу исправить вторую проблему, когда метод, который я сделал с типом аргумента List, говорит, что «метод add (List) в типе ArrayList3 не применим для аргументов (ArrayList)». Задаваясь вопросом, может ли программа конфликтовать с ArrayList.add, я попытался изменить имя метода на «measure», но все равно ошибка не исчезла.

Doyeop Lee 06.06.2018 12:57

Я действительно не понимаю, почему возникает эта проблема; не реализует ли класс ArrayList интерфейс List?

Doyeop Lee 06.06.2018 12:58

Возможно, попробуйте другое рабочее пространство без этого Custom ArrayList.

J_D 06.06.2018 15:11

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