arraylistremove 关于java里ArrayList类的remove(index)方法
亲爱的读者们,你是否对arraylistremove和关于java里ArrayList类的remove(index)方法的相关问题感到困惑?别担心,今天我将为你解答这些问题,让你对此有更清晰的认识。
java中使用ArrayList如何修改里面的内容.
java里增强for循环【for(String a: arrayList)】里面可以修改数据,但是不能删除数据,如下例子:
<pre t="code" l="java">修改集合:
import java.util.ArrayList;
import java.util.List;
public class TestA{
public static void main(String[] args){
//集合
List<String> arrayList=new ArrayList<String>();
//存放元素
arrayList.add("hello");
arrayList.add("ninghao");
arrayList.add("bye");
//集合标量
int index=0;
//遍历集合
for(String a:arrayList){
//输出集合对象
System.out.println(a);
//修改集合对象
arrayList.set(index,"hi");
//标量加一
index++;
}
//输出集合
System.out.println(arrayList);
}
}
结果:
hello
ninghao
bye
[hi, hi, hi]
删除集合元素:
import java.util.ArrayList;
import java.util.List;
public class TestA{
public static void main(String[] args){
//集合
List<String> arrayList=new ArrayList<String>();
//存放元素
arrayList.add("hello");
arrayList.add("ninghao");
arrayList.add("bye");
//集合标量
int index=0;
//遍历集合
for(String a:arrayList){
//输出集合对象
System.out.println(a);
//删除元素
arrayList.remove(index);
//标量加一
index++;
}
//输出集合
System.out.println(arrayList);
}
}
结果:
hello
Exception in thread"main" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
at java.util.AbstractList$Itr.next(AbstractList.java:343)
at app.TestA.main(TestA.java:19)由以上例子可以看出,增强for循环,在循环里可以修改集合元素,但是不能删除集合元素。
关于java里ArrayList类的remove(index)方法
remove(int)用于删除ArrayList数组容器中指定位置int上的元素,并返回此元素.
Java源代码
public E remove(int index){
RangeCheck(index);
modCount++;
E oldValue= elementData[index];
//numMoved需要移动的元素个数,也就是index后面的所有的元素个数
int numMoved= size- index- 1;
//将index后面的所有元素全部往前依次移动一个位置
if(numMoved> 0)
System.arraycopy(elementData, index+1, elementData, index,
numMoved);
//经过arraycopy的移位,数组容器的最个位置被腾空,
//但是仍然持有某个对象的引用,需要把这个多余的引用置为null.
elementData[--size]= null;// Let gc do its work
return oldValue;
}
java String[]与ArrayList的互换
先说一下,使用ArrayList也只能生成有相同数据的一个新对象,然后在这上面进行数据的添加和删除等操作,而不可能对原来的数组进行数据删除操作,原来的String数组是不变的。
转换为ArrayList的代码如下(用现成的方法就行了,不用使用循环去逐个add):
String[] s={"aa","bb","cc","dd","ee"};
ArrayList<String> list= new ArrayList<String>();
list.addAll(Arrays.asList(s));
或者可以更简洁地写为一句:
ArrayList<String> list= new ArrayList<String>(Arrays.asList(s));
Java 中ArrayList<Object>如何去除其中重复的对象
去掉重复对象的方案很多,比如利用set去重等.
参考代码
importjava.util.ArrayList;
importjava.util.HashSet;
publicclassTest{
publicstaticvoidmain(String[]args){
ArrayList<Object>list=newArrayList<Object>();
list.add(8);
list.add(2);
list.add(8);
list.add(7);
list.add(6);
list.add(5);
list.add(2);
list.add(7);
System.out.println("原始集合"+list);
//方案1.不考虑list原始顺序的情况下
HashSet<Object>set=newHashSet<Object>(list);//把list作为参数放到HashSet的构造函数里,去掉重复元素
ArrayList<Object>result1=newArrayList<Object>(set);//把set作为参数放到ArrayList构造函数里
System.out.println(result1);//输出result1
//方案2考虑list的原始顺序
ArrayList<Object>result2=newArrayList<Object>();
for(inti=0;i<list.size();i++){
if(!result2.contains(list.get(i))){//如果没有重复元素,才添加进结果集合result2
result2.add(list.get(i));
}
}
System.out.println(result2);//输出result2
}
}
输出
原始集合[8,2,8,7,6,5,2,7]
[2,5,6,7,8]
[8,2,7,6,5]
非常感谢您的阅读!我们希望本文对于解决您关于arraylistremove的问题提供了一些有价值的信息。如果您还有其他疑问,我们将很乐意为您提供进一步的帮助。