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 直接赋值{},[]等形式尝试。

举例子如下:

public class TestSomeFunction {
    public static void  printArray(int[][] x){
        for (int i=0;i<x.length;i++){
            for (int j=0;j<x[i].length;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<Integer> array2 =new ArrayList<>(new Integer(12));
        System.out.println(array2);

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

其他瞎操作根本不行。

2,初始化方法如下:

2.1空集合

List<Integer> array = new ArrayList<Integer>(){};
        System.out.println(array);
#[]

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

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

List<Integer> 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<Integer> array = new ArrayList<Integer>(){{add(12);add(34);}};

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

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

当然也可,

List<Integer>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<Integer> 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]都写赋值,以最后一个为准,之前的赋值都没用了。替换了。

愿我们终有重逢之时,

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小李飞刀李寻欢

您的欣赏将是我奋斗路上的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值