【发布时间】:2011-04-05 19:31:55
【问题描述】:
我有一个家庭作业,我需要在ArrayList<Interger> 中插入或添加新元素,条件如下:
元素必须升序。
ArrayList<Integer>中没有重复的元素insert 方法运行 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));
我该怎么办?
ps。我的导师只需要使用 ArrayList
【问题讨论】:
-
ArrayList 有什么理由这样做吗?为什么不设置?
-
方法调用中不需要加
super.(这种情况下)