我有一个家庭作业,需要在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
这是我的处理方式:(注释中的解释)
public void insert(int x){
// loop through all elements
for (int i = 0; i < size(); i++) {
// if the element you are looking at is smaller than x,
// go to the next element
if (get(i) < x) continue;
// if the element equals x, return, because we don't add duplicates
if (get(i) == x) return;
// otherwise, we have found the location to add x
add(i, x);
return;
}
// we looked through all of the elements, and they were all
// smaller than x, so we add ax to the end of the list
add(x);
}
您发布的当前解决方案看起来大部分都是正确的,除了它不会按升序保存元素的事实。
我是Vaadin和Java的新手,我正在处理以下问题: 在下面的代码中,我想在ArrayList“newList”中添加多个元素。如你所见,名为“ps”的元素有5个子元素。 问题是,在ArrayList中添加的当前(循环中的)元素替换了每个索引中所有先前的元素,结果它最终只返回最后一个“ps”元素,循环发生的次数是多少。 和代码:
在Java集合中,哪个集合不允许重复,哪个集合还保留数据的插入顺序?
实际上,我已经实现了listview,在这里我们可以通过点击与之相关的togglebutton来选择合适的行。我正在将该行中的数据添加到arraylist。但是,我面临的问题是,当我选择行1,然后选择行2时,arraylist中的数据如下:(行1数据,行1数据,行2数据),这里行1数据是重复的。。但是,我需要这个:(第1行数据,第2行数据)。甚至我也尝试使用clear()方法。但是,当我使用它时,
我想从数组列表打印元素,但我得到错误的输出(.A@15db9742)
当我使用System.out.println静态方法时,下面的Java程序显示ArrayList中的所有元素。但是,当我在方法中返回列表时,它只显示ArrayList中的一个元素。我希望你能给我一些指点,让我知道你做错了什么:
这几天我一直有麻烦,无法克服。我有一个arrayList存储。 我想根据我的endTime对我的事件进行排序,我得到的问题是endTime基于startTime,它使用我的课程中的小时和分钟。当我试着使用时,我感到困惑。我把它放在我的类中,但后来意识到它必须放在我的类中才能比较实例。如何使用compareTo来比较结束时间,以及如何输出排序。当我在我的事件中进行比较时,我得到了 我也可以一个类,或