zoukankan      html  css  js  c++  java
  • 集合赋值及for循环删除符合条件的元素

    一、Java语言中ArrayList对象能直接赋值给另一个ArrayList对象吗?

    https://zhidao.baidu.com/question/399214655.html

    ArrayList<Integer> num1 = new ArrayList<Integer>();
    num1.add(1);
    num1.add(2);

    ArrayList<Integer> num2 = new ArrayList<Integer>();
    num2.add(1);
    num2.add(3);
    num2.add(4);

    num1 = num2;

    num1=num2是将num1的地址值指向num2,而num1原先的对象会被垃圾回收。但是在这里我想告诉你的是集合之间的复制方法:
    方法一:ArrayList<Integer> num2 = new ArrayList<Integer>(num1);//利用集合自带的构造方法
    方法二:ArrayList<Integer> num2 =(ArrayList<Integer>) num1.clone();//利用克隆的方法进行赋值。

    num1 = num2并不是赋值,而是指向,你定义的num1并不是一个ArrayList对象,而是一个指针,它只是指向了这个你后面创建的这个对象,当你执行num1 = num2时,只是将指针的指向你第二个创建的对象。

    举个例子,有两条宠物狗,第一条你叫它小白,给它买了个项圈,第二条你叫它胖胖,也买了项圈,还买了宠物衣服。现在你发现胖胖比小白还白,所以你决定管胖胖叫小白,这之后你小白和胖胖这两个名字都是指第二条狗,而第一条狗因为名字被拿走,它就没有名字了。

    二、java中for循环删除元素的问题(for循环遍历时,删除集合中符合条件的元素,容易删除不成功)

    https://blog.csdn.net/answers1993ai/article/details/78436870

    for(int i=0;i<list.size();i++){  
        if(list.get(i).contains("a")){  
            list.remove(i);  
            i--;  
        }  
    }  
  • 相关阅读:
    java——异常(一)
    java —— 全面解析 Annotation
    多线程(一)——三种实现方式
    java ——static 关键词总结
    java —— equals 与 ==
    java——数组与内存控制
    java—— finall 关键词
    File类实现文件夹和文件复制
    java —— 内部类
    类成员——代码块
  • 原文地址:https://www.cnblogs.com/liyanli-mu640065/p/9067043.html
Copyright © 2011-2022 走看看