Java中List与Array的转换

本文介绍了Java中List与Array互相转换的实用方法。包括如何使用List的toArray方法将List转换为Array,以及如何利用Arrays.asList方法实现Array到List的转换。通过示例代码展示了不同类型数据的具体操作。

       在编码中,经常会用到两种存储结构之间的转换,而对于存储数据来说,在list和array之间转换也较为频繁,这里整理几种常用方法,但归根到底,还是API里的方法:

 

1. List转换成Array

 

List里有两个方法:

 

Object[] toArray();

<T> T[] toArray(T[] a);

 看方法签名也就知道了,两个不同之处就是带有范型的方法具有运行时类型确定的特性,而前一个只能返回Object[],在需要的时候需要强制转换,简单吧!

 

<T> T[] toArray(T[] a);在转换时,如果a的大小小于list的大小,则会建一个新的数组,否则则用a~

 

根据API的说法,toArray()和toArray(new Object[0])效果是一样的。

 

下面来个例子:

public class ListToArray {
    public static void main(String[] args) {
        ListToArray x = new ListToArray();
        List<User> users = new ArrayList<User>();
        User user1 = x.new User("zhangsan", 20);
        User user2 = x.new User("Lisi", 25);
        users.add(user1);
        users.add(user2);
        User[] userArray = users.toArray(new User[0]);
        userArray[0].setName("Modi");
        System.out.println(userArray[0]);//Name: Modi; Age: 20
        System.out.println(users.get(0));//Name: Modi; Age: 20

        List<String> list = new ArrayList<String>();
        list.add("fisrt");
        list.add("second");
        list.toArray();//Object[]
        list.toArray(new String[0]);//String[]
        String str[] = list.toArray(new String[] {});
        
        String str2[] = new String[1];
        list.toArray(str2);
        System.err.println(str2[0]);//null
        
        String str3[] = new String[2];
        list.toArray(str3);
        System.err.println(str3[0]);//first
        
        System.out.println(str.length);
    }

    public class User {
        private String name;
        private int    age;

        public User(String name, int age) {
            this.name = name;
            this.age = age;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }

        @Override
        public String toString() {
            return "Name: " + name + "; Age: " + age;
        }
    }
}
 

2. Array转换为List

 

 

public static <T> List<T> asList(T... a) ;

 

给个示例:

public class ArrayToList {
    public static void main(String[] args) {
       List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");
       for(String s:stooges) {
           System.out.print(s+"\t");
       }
       System.out.println();
       String[] other = new String[5];
       for(int i=75;i>72;i--) {
           other[75-i]=(char)i+"";
       }
       List<String> list = Arrays.asList(other);
       for(String s:list) {
           System.out.print(s+"\t");
       }
    }
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

乘风而来的思绪

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值