Java--数组和集合之间的相互转换

数组转为集合

第一种方式:使用Arrays类中的asList方法

  • 代码演示:
public class Change {
    public static void main(String[] args) {
        String[] str={"小黄","小王","小丽"};
        //调用Arrays类中的asList方法
        List<String> list = Arrays.asList(str);
        //显示list集合种的内容
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()){
            String s = iterator.next();
            System.out.print(s);//打印结果为:小黄小王小丽
        }
        //在集合种添加元素
        list.add("小张");
        list.remove(1);
    }
}

程序结果为:
在这里插入图片描述

  • 出现异常的原因是:Arrays.asList的方法返回值一个私有静态内部类java.util.Arrays.ArrayList,它并非java.util.ArrayList类。java.util.Arrays.ArrayList类具有 set(),get(),contains()等方法,但是不具有添加add()或删除remove()方法,所以调用add()方法会报错。

第二种方式:使用ArrayList集合的构造器

  • 代码演示:
public class Change2 {
    public static void main(String[] args) {
        String[] str={"小黄","小王","小丽"};
        //使用ArrayList集合中的构造器
        ArrayList<String> list = new ArrayList<>(Arrays.asList(str));
        //显示集合中的内容
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()){
            String s = iterator.next();
            System.out.print(s);
        }
        //对集合进行增删操作
        list.add("小张");
        list.remove("小黄");
        System.out.println(list);
    }
}

程序结果:
在这里插入图片描述

使用Collections的addAll方法(最高效)

  • 先建立一个与数组长度相同的集合,然后调用Collections中的addAll方法,把数组中的元素添加到集合中。
  • 代码演示:
public class Change3 {
    public static void main(String[] args) {
        String[] str={"小黄","小王","小丽"};
        ArrayList<String> list = new ArrayList(str.length);
       Collections.addAll(list,str);
        list.add("小李");
        System.out.println(list);
    }
}

程序结果:
在这里插入图片描述

  • addAll方法的原码
 public static <T> boolean addAll(Collection<? super T> c, T... elements) {
        boolean result = false;
        for (T element : elements)
            result |= c.add(element);
        return result;
    }
  • 可以看出,在进行添加时使用的是位运算,所以计算效率非常高。

集合转为数组

使用Collections中的toArray方法

  • 代码演示:
public class Change4 {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        //使用Colletions类中的toArray方法
        String[] str = (String[]) list.toArray();
        System.out.println(str);
    }
}
  • 此时程序报错:
    在这里插入图片描述
  • 出现错误的原因:
    • 因为java中的强制类型转换是针对单个对象才有效果的,而List是多对象的集合,所以将整个List强制转换是不行的。
  • 正确的写法:
public class Change4 {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        Integer[] integers = list.toArray(new Integer[list.size()]);
        for(Integer integer:integers){
            System.out.println(integer);
        }
    }
}

使用循环把集合中的数据写入到数组中

  • 代码演示:
public class Change5 {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        Integer[] integers = new Integer[list.size()];
        for (int i = 0; i < list.size(); i++) {
            integers[i]=list.get(i);
        }
        //输出数组中的信息
        for (Integer integer:integers){
            System.out.println(integer);
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值