各位大佬好,今天看到一个ArrayList,我很郁闷,按照我之前的思路根本就不能赋值啊,数组1,数组2,经过搜索后发现只能用add这种笨方法,我特么有100w个也挨个add进去啊,这不是扯淡么?能参考此博文进行clone么?
I'm here waiting for you
1,clone or copyof or 直接赋值{},[]等形式尝试。
举例子如下:
- public class TestSomeFunction {
- public static void printArray(int[][] x){
- for (int i=0;i
- for (int j=0;j
- System.out.println("i="+i+",j="+j+",x[i][j]="+x[i][j]);
- }
- }
- }
- public static void main(String[] args) {
- int [][]x=new int[][]{{1,2},{3},{3}};
- printArray(x);
- int y[][]=new int[3][];
- y=x.clone();
- printArray(y);
- x[0][1]=12;
- printArray(x);
- printArray(y);
- }
简单数组的复制clone,只能是浅复制,改变后结果都变了,for循环复制肯定没有问题。
【注意:上面的数组更像是python中的列表,而不是矩阵,因为j是变化的。另外数组的维度必须给定,就是上面的3,否则初始化失败。】
现在放List中,
这玩意无法实现这种复制,下面一打印啥都没有,就是个空数组([]形式)
- List
array2 =new ArrayList<>(new Integer(12)); - System.out.println(array2);
小括号内如果是一个数,那就是表示初始化长度。
其他瞎操作根本不行。
2,初始化方法如下:
2.1空集合
- List
array = new ArrayList(){}; - System.out.println(array);
- #[]
后面的大括号可以不带,初始化后还可以继续进行add
2.2指定大小??还是长度啥的?其实无需指定,可以自己增加。
- List
array2 =new ArrayList<>(2); - System.out.println(array2);
- array2.add(12);
- array2.add(24);
- array2.add(36);
- System.out.println(array2);
指定了长度2.
2.3,上面的也可这么写
List array = new ArrayList(){{add(12);add(34);}};
2.4,快速初始化,将数组赋给它。
- Integer p[] = new Integer[]{1,2,3,4};
- List
array3 =new ArrayList<>(Arrays.asList(p)); - System.out.println(array3);
当然也可,
- List
array4=Arrays.asList(1,2,3,8,12,98); - System.out.println(array4);
上面的集合都可以直接打印的,当然也可挨个打印,如下:
- Object[] k = array2.toArray();
- System.out.println("down is print");
- for (Object i:k)
- System.out.println(i);
这个Object有点像cpp中的auto,自动定义类型。
2.4 数组里的集合
- List
array5[]=new ArrayList[2]; - array5[0]=new ArrayList<>(Arrays.asList(p));
- array5[1]=new ArrayList<>(Arrays.asList(p));
- System.out.println(array5[0]);
就是这种形式,里面的数组元素初始化方法只能用new这种快速形式,不能直接Array.asList()这种
下面这种也可以
- array5[1]=new ArrayList<>(){{Arrays.asList(q);}};
- 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