Я новичок в 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;
}
}
В чем будет проблема и что я мог пропустить? Заранее большое спасибо!
Очистить и восстановить?
Работает нормально на Java 8.
У вас есть класс ArrayList3. Я предполагаю, что у вас есть (или был в какой-то момент) собственный класс ArrayList.
У вас есть другой класс с именем ArrayList в том же исходном файле или в том же пакете, что и ArrayList3 (неудивительно, поскольку класс, который вы здесь показываете, называется ArrayList3)
Тоже не могу воспроизвести. Это ошибка компиляции или времени выполнения?




У вас есть другой класс 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 в пути к классам, который вызывает это,
Спасибо, действительно был класс ArrayList, который я создал в том же пакете, и после того, как я его удалил, первая проблема была решена; но я все еще не могу исправить вторую проблему, когда метод, который я сделал с типом аргумента List, говорит, что «метод add (List) в типе ArrayList3 не применим для аргументов (ArrayList)». Задаваясь вопросом, может ли программа конфликтовать с ArrayList.add, я попытался изменить имя метода на «measure», но все равно ошибка не исчезла.
Я действительно не понимаю, почему возникает эта проблема; не реализует ли класс ArrayList интерфейс List?
Возможно, попробуйте другое рабочее пространство без этого Custom ArrayList.
Компилируется нормально. Невозможно воспроизвести вашу ошибку.