Mhd*_*wan 5 java indexing collections list fixed
我想保持Java列表中项目的索引是固定的.
示例代码:
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList<Double> a = new ArrayList<Double>();
a.add(12.3);
a.add(15.3);
a.add(17.3);
a.remove(1);
System.out.println(a.get(1));
}
}
Run Code Online (Sandbox Code Playgroud)
这将输出17.3
.问题是17.3
在索引2上,现在它在索引1上!
有没有办法在删除元素时保留其他元素的索引?或者是否有另一类更适合此目的?
注意:我不想要固定大小的Collection.
而不是打电话给a.remove(1)
你a.set(1, null)
.这将使所有元素保持在同一位置,同时仍然"删除"索引1处的值.
小智 5
您可能需要使用java.util.SortedMap
与int
键:
import java.util.*;
public class Test {
public static void main(String[] args)
{
SortedMap<Integer, Double> a = new TreeMap<Integer, Double>();
a.put(0, 12.3);
a.put(1, 15.3);
a.put(2, 17.3);
System.out.println(a.get(1)); // prints 15.3
System.out.println(a.get(2)); // prints 17.3
a.remove(1);
System.out.println(a.get(1)); // prints null
System.out.println(a.get(2)); // prints 17.3
}
}
Run Code Online (Sandbox Code Playgroud)
SortedMap
是一个可变大小的集合List
索引)java.util.List#remove(int)
自规范读取以来,没有任何实现可以保留索引:
删除此列表中指定位置的元素(可选操作).将任何后续元素向左移位(从索引中减去一个).返回从列表中删除的元素.