java中List类型的回顾

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比较)






(本人开发经验尚浅,如有错误欢迎指正)

3、参考地址

参考地址: https://blog.csdn.net/dwmul/article/details/84258273

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值