1、遍历List的方法
1、for循环遍历
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
for(int i =0; i<list.size();i++){
System.out.println(list.get(i));
}
2、迭代器遍历
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
Iterator<String> it = list.iterator();
while(it.hasnext()){
String str = it.next();
System.out.println(str);
}
2、删除注意事项
1、从String类型转化为List
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
String str = "wo,cai,keng,le";
list = Arrays.asList(str.split(","));
for(int i = 0; i<list.size();i++){
System.out.println(list.get(i));
}
}
转化看起来没有什么问题
但是如果此时使用了list.remove(i);这一方法就会出现
java.lang…UnsupportedOperationException异常,原因是asList方法继承的AbstractList里面没有重写remove和add方法,正确做法应该是在转化的时候
list = new ArrayList<>(Arrays.asList(str.split(",")));
2、从两个list中删除相同元素
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
List<String> list1 = new ArrayList<String >();
String str = "wo,cai,keng,le";
String str1 = "wo,tai,cai,le";
list = new ArrayList<>(Arrays.asList(str.split(",")));
list1 = new ArrayList<>(Arrays.asList(str1.split(",")));
for (Iterator<String> it = list.iterator(); it.hasNext(); ) {
String str2 = it.next();
for (Iterator<String> it1 = list1.iterator(); it1.hasNext(); ) {
String str3 = it1.next();
if (str2.equals(str3)) {
it.remove();
it1.remove();
break;//元素唯一
}
}
}
for (int i = 0;i<list.size();i++){
System.out.println(list.get(i));
}
for (int i = 0;i<list1.size();i++){
System.out.println(list1.get(i));
}
}
执行结果为:
for(int i = list.size()-1;i>=0;i--){
for (int j = list1.size()-1;j>=0;j--){
if(list.get(i).equals(list1.get(j))){
list.remove(i);
list1.remove(j);
break;
}
}
}
for循环删除的方法,删除之后如果不break会导致数组越界,比如执行了list.remove(3),下个内循环继续list.get(3),数组越界
(推荐)迭代器可以方法没有这个问题,可以实现list中的元素和当前剩余的list1元素的比较
(wo和wo,tai,cai,le比较)(cai和tai,cai,le比较)
(本人开发经验尚浅,如有错误欢迎指正)