• java集合ArrayList如何赋值?


    各位大佬好,今天看到一个ArrayList,我很郁闷,按照我之前的思路根本就不能赋值啊,数组1数组2,经过搜索后发现只能用add这种笨方法,我特么有100w个也挨个add进去啊,这不是扯淡么?能参考此博文进行clone么?

    For deep learning QQ Second Group 629530787 

    I'm here waiting for you

    1,clone or copyof or 直接赋值{},[]等形式尝试。

    举例子如下:

    1. public class TestSomeFunction {
    2. public static void printArray(int[][] x){
    3. for (int i=0;i
    4. for (int j=0;j
    5. System.out.println("i="+i+",j="+j+",x[i][j]="+x[i][j]);
    6. }
    7. }
    8. }
    9. public static void main(String[] args) {
    10. int [][]x=new int[][]{{1,2},{3},{3}};
    11. printArray(x);
    12. int y[][]=new int[3][];
    13. y=x.clone();
    14. printArray(y);
    15. x[0][1]=12;
    16. printArray(x);
    17. printArray(y);
    18. }

     简单数组的复制clone,只能是浅复制,改变后结果都变了,for循环复制肯定没有问题。

    【注意:上面的数组更像是python中的列表,而不是矩阵,因为j是变化的。另外数组的维度必须给定,就是上面的3,否则初始化失败。】

    现在放List中,

    这玩意无法实现这种复制,下面一打印啥都没有,就是个空数组([]形式)

    1. List array2 =new ArrayList<>(new Integer(12));
    2. System.out.println(array2);

    小括号内如果是一个数,那就是表示初始化长度。

    其他瞎操作根本不行。

    2,初始化方法如下:

    2.1空集合

    1. List array = new ArrayList(){};
    2. System.out.println(array);
    3. #[]

    后面的大括号可以不带,初始化后还可以继续进行add

    2.2指定大小??还是长度啥的?其实无需指定,可以自己增加。

    1. List array2 =new ArrayList<>(2);
    2. System.out.println(array2);
    3. array2.add(12);
    4. array2.add(24);
    5. array2.add(36);
    6. System.out.println(array2);

    指定了长度2.

    2.3,上面的也可这么写

    List array = new ArrayList(){{add(12);add(34);}};

    2.4,快速初始化,将数组赋给它。

    1. Integer p[] = new Integer[]{1,2,3,4};
    2. Listarray3 =new ArrayList<>(Arrays.asList(p));
    3. System.out.println(array3);

    当然也可,

    1. Listarray4=Arrays.asList(1,2,3,8,12,98);
    2. System.out.println(array4);

    上面的集合都可以直接打印的,当然也可挨个打印,如下:

    1. Object[] k = array2.toArray();
    2. System.out.println("down is print");
    3. for (Object i:k)
    4. System.out.println(i);

    这个Object有点像cpp中的auto,自动定义类型。

    2.4 数组里的集合

    1. List array5[]=new ArrayList[2];
    2. array5[0]=new ArrayList<>(Arrays.asList(p));
    3. array5[1]=new ArrayList<>(Arrays.asList(p));
    4. System.out.println(array5[0]);

    就是这种形式,里面的数组元素初始化方法只能用new这种快速形式,不能直接Array.asList()这种

    下面这种也可以

    1. array5[1]=new ArrayList<>(){{Arrays.asList(q);}};
    2. array5[1]=new ArrayList<>(2){{add(21);}};

    如果上面的array5[1]都写赋值,以最后一个为准,之前的赋值都没用了。替换了。

    愿我们终有重逢之时,

    而你还记得我们曾经讨论的话题。

  • 相关阅读:
    HTML5的学习
    【Docker】从零开始:5.Docker安装与卸载
    基于javaweb+mysql的前后端分离网上商城项目设计和实现(java+ssm+springboot+vue+redis)
    【开源】串口/蓝牙/TCP/UDP调试工具SerialTest
    机器人制作开源方案 | 杠杆式6轮爬楼机器人
    application/octet-stream的问题
    以dzzoffice为例设置通过 SOCKET 连接 SMTP 服务器发送(支持 ESMTP 验证)
    行变列,查找某一时刻附近记录
    Java基础面试-JDK JRE JVM
    python爬虫1
  • 原文地址:https://blog.csdn.net/SPESEG/article/details/126563458