问题是从HashMap.values()集合创建ArrayList需要多少钱?或者单独创建值Collection?假设Map.size()> 100k.对象也可以一直保存在ArrayList(而不是HashMap)中,这对其他部分有影响(元素的修改,易于按键).ArrayList用于迭代每个第n个元素.(这就是为什么不能直接使用值集合的原因).在迭代期间不进行任何修改.
众所周知,arraylist init.应该是这样的
ArrayList<A> a = new ArrayList<A>();
ArrayList<Integer> a = new ArrayList<Number>(); // compile-time error
Run Code Online (Sandbox Code Playgroud)
所以,为什么java允许这些?
1. ArrayList<? extends Object> a1 = new ArrayList<Object>();
2. ArrayList<?> a2 = new ArrayList<Integer>();
Run Code Online (Sandbox Code Playgroud)
那么,如果他们是正确的,为什么不允许这些呢?
1. a1.add(3);
2. a2.add(3);
Run Code Online (Sandbox Code Playgroud)
编译器消息是:类型ArrayList中的方法add(int,capture#1-of?extends Object)不适用于参数(int)
更一般
1. a1.add(null e);
2. a2.add(? e);
Run Code Online (Sandbox Code Playgroud)
我读到了这个,但很高兴收到你的来信.谢谢
另一个有趣的观点是:
ArrayList<ArrayList<?>> a = new ArrayList<ArrayList<?>>(); // correct
ArrayList<?> a = new ArrayList<?>(); // wrong. I know it's reason but I have some
question in my mind that mentioned above
Run Code Online (Sandbox Code Playgroud) 如果我有一个PHP数组:
$array
Run Code Online (Sandbox Code Playgroud)
有价值:
45,41,40,39,37,31
Run Code Online (Sandbox Code Playgroud)
我有一个变量:
$number = 38;
Run Code Online (Sandbox Code Playgroud)
我怎样才能返回值?:
39
Run Code Online (Sandbox Code Playgroud)
因为这是数组中最接近38(向上计数)的值?
问候,
泰勒
我怎样才能转换ArrayList成string[]C#?
我有一个包含> 100k对象的TreeSet.我有另一种方法,需要ArrayList作为参数.
有没有办法在不迭代整个TreeSet然后手动将每个对象添加到ArrayList的情况下完成此操作?
我想做这样的事情 ArrayList<String<String>> mylist
我该如何创建它?
如何添加到外部和内部列表
以及如何将内部列表转换为简单的数组列表?
我在一个文件夹中有一组文件,所有文件都以类似的名字开头,除了一个.这是一个例子:
Coordinate.txt
Spectrum_1.txt
Spectrum_2.txt
Spectrum_3.txt
.
.
.
Spectrum_11235
Run Code Online (Sandbox Code Playgroud)
我能够列出指定文件夹中的所有文件,但列表不是频谱号的升序.示例:执行程序时,我得到以下结果:
Spectrum_999.txt
Spectrum_9990.txt
Spectrum_9991.txt
Spectrum_9992.txt
Spectrum_9993.txt
Spectrum_9994.txt
Spectrum_9995.txt
Spectrum_9996.txt
Spectrum_9997.txt
Spectrum_9998.txt
Spectrum_9999.txt
Run Code Online (Sandbox Code Playgroud)
但这个顺序不正确.Spectrum_999.txt之后应该有Spectrum_1000.txt文件.有人可以帮忙吗?这是代码:
import java.io.*;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class FileInput {
public void userInput()
{
Scanner scanner = new Scanner( System.in );
System.out.println("Enter the file path: ");
String dirPath = scanner.nextLine(); // Takes the directory path as the user input
File folder = new File(dirPath);
if(folder.isDirectory())
{
File[] fileList = folder.listFiles();
Arrays.sort(fileList);
System.out.println("\nTotal number of items present …Run Code Online (Sandbox Code Playgroud) 我有一个关于在java中使用getter方法的问题.假设我有这个课程:
class Test {
private ArrayList<String> array = new ArrayList<String>();
public ArrayList getArray() {
return this.array;
}
public void initArray() {
array.add("Test 1");
array.add("Test 2");
}
}
class Start {
public static void main(String args[]) {
initArray();
getArray().remove(0);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:
是否会修改实际的arraylist对象(从中删除"Test 1")?我想我已经在某些地方看过这个,但我认为吸气剂只是提供了该物体的副本.不是对它的引用.如果它确实以这种方式工作(作为参考),那么这也会起作用(类Test的arraylist对象也会被这个改变)吗?:
class Start {
public static void main(String args[]) {
initArray();
ArrayList aVar = getArray();
aVar.remove(0);
}
}
Run Code Online (Sandbox Code Playgroud) 请考虑以下代码:
class AA { }
class BB extends AA { }
public class Testing {
public static void main(String[] args) {
BB[] arr = new BB[10];
AA[] arr2 = arr;
BB b = new BB();
AA a = new AA();
arr2[0] = a; // ArrayStoreException at runtime
arr2[1] = b;
List<BB> listBB = new ArrayList<>();
List listAA = listBB;
listAA.add("hello world.txt");
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,ArrayStoreException我尝试了arr2[0] = a.这意味着数组会记住它必须接受的类型.但是List不记得他们了.它只是编译并运行良好.在ClassCastException当我检索对象将被抛出BB.
所以问题是:
数组如何记住它的类型(我知道它被称为"具体化").这究竟是怎么发生的?
并且为什么只有阵列才能获得这种功率,但是ArrayList …