Java 我怎么能';复制';将一个项目放入包含n个引用的列表中?
我在Java中有一些对象(比如Double),我需要一个长度为n的列表,每个元素都是对Double的引用。我想要一个这样做的习惯用法,希望但不一定不使用O(1)only内存Java 我怎么能';复制';将一个项目放入包含n个引用的列表中?,java,list,copy,Java,List,Copy,我在Java中有一些对象(比如Double),我需要一个长度为n的列表,每个元素都是对Double的引用。我想要一个这样做的习惯用法,希望但不一定不使用O(1)only内存 Collections.fill() 可能会帮助您您可以使用 .为此目的创建一个数据结构怎么样? 诸如此类: import java.util.HashMap; public class SpecialArray { private HashMap<Integer, Double> elements;
Collections.fill()
可能会帮助您您可以使用
.为此目的创建一个数据结构怎么样? 诸如此类:
import java.util.HashMap;
public class SpecialArray {
private HashMap<Integer, Double> elements;
private Double specialElement;
private int size;
public SpecialArray(Double specialElement, int size) {
this.elements = new HashMap<Integer, Double>();
this.specialElement = specialElement;
this.size = size;
}
public Double get(int index) {
if(index<0 || index>=size) {
return null;
}
if(elements.containsKey(index)) {
return elements.get(index);
}
return specialElement;
}
public boolean add(Double d, int index) {
if(index<0 || index>=size || elements.containsKey(index)) {
return false;
}
elements.put(index, d);
return true;
}
}
import java.util.HashMap;
公共类特殊射线{
私有HashMap元素;
私人双专业;
私有整数大小;
公共特殊数组(双特殊元素,整数大小){
this.elements=newhashmap();
this.specialElement=specialElement;
这个。大小=大小;
}
公共双get(int索引){
如果(索引=大小){
返回null;
}
if(元素.容器(索引)){
返回元素.get(索引);
}
退货优惠;
}
公共布尔加法(双d,整数索引){
if(index=size | | elements.containsKey(index)){
返回false;
}
元素。put(索引,d);
返回true;
}
}
当然,这不是一个完整的示例,可以使用泛型类型编写。
但是,如果列表中还有一些其他元素,那么我认为这可能会很有用。“我想要一个这样做的习惯用法,”它是什么意思。你能再解释一下吗?这确实是O(1)空间,因为结果列表对象被实现为一个引用加上一个int(长度)。