我有一个家庭作业,我需要在ArrayList<Interger>
以下条件下插入或添加新元素:
元素必须升序。
中没有重复的元素
ArrayList<Integer>
插入方法运行O(n)次。
这是我在添加新元素之前检查重复元素的插入方法。
public void insert(int x){
//effect: Check duplicate elements if not x to the elements;
boolean found = false;
if(super.size()!=0){
for(int i=0; i<super.size(); i++){
if(super.get(i)==x){
found = true;
}
}
}
if(found){ return; }
else{ super.add(x); }
}
我该怎么做?谢谢你。
添加
这是我的班级名称 InSetExtra
public class IntSetExtra extends ArrayList<Integer> {
private static final long serialVersionUID = 1L;
public IntSetExtra(){
super();
}
public void insert(int x){
//effect: Check duplicate elements if not x to the elements;
boolean found = false;
if(super.size()!=0){
for(int i=0; i<super.size(); i++){
if(super.get(i)==x){
found = true;
}
}
}
if(found){ return; }
else{ super.add(x); }
}
public String toString(){
//effect: return string of this.
if(super.size()==0) return "[]";
String s = "[" + super.get(0).toString();
for(int i=1; i<super.size(); i++){
s += ", " + super.get(i).toString();
}
return s += "]";
}
}
我需要插入大尺寸的元素,例如:
IntSetExtra a, b;
a = new IntSetExtra();
b = new IntSetExtra();
for(int i=0; i<30000; i++){ a.insert(2*i); }
for(int i=0; i<30000; i++){ a.insert(i); }
System.out.println("a sub = "+a.toString().substring(0, 37));
我该怎么办?
附:我的导师只需要使用 ArrayList
这是 O(n) 中的插入方法。
public void insert(int x) { int pos = Collections.binarySearch(this, x); if (pos < 0) { add(-pos-1, x); } }