配列からリスト、リストから配列へのメモ

リストする配列とリストする配列

最近、新旧のシステムの統合により、配列とリストの変換の問題に遭遇しましたが、以下はオンライン情報を参考に整理したものです。

public class List2Array {

    public static void main(String[] args) {
        /**
         * List转数组
         */
        ArrayList<String> list = new ArrayList<String>();
        String[] strings = new String[list.size()];
        list.add("1");
        list.add("2");
        list.add("3");      
        strings = list.toArray(strings);
        for(String s:strings){
            System.out.println(s);
        }
        System.out.println("-------------");

        /**
         * 数组转List
         */
         //在使用数组转List的时候不建议对基础类型进行转换,因为会把数组作为一个单独的对象返回(即下文注释的部分)
         //如果需要对基础类型数组进行转换,可以用apache提供的ArrayUtils工具类将基础类型数组转换成Object。
        int[] i = {11,22,33};
        List<Object> intList = Arrays.asList(ArrayUtils.toObject(i));
        //List<Object> intList = Arrays.asList(i);

        for(Object j:intList){
            System.out.println(j.toString());
        }
        System.out.println(intList.size());
        System.out.println("-------------");

        String s[] = {"aa","bb","cc"};
        //如果list直接等于aslist返回的结果,则无法进行add操作,会报不支持add操作的错误(尽管编译时候不会报错)
        List<String> sList = new ArrayList<String>(Arrays.asList(s));
        //List<String> sList = Arrays.asList(s);
        sList.add("dd");
        for(String str:sList){
            System.out.println(str);
        }
        System.out.println(sList.size());
        System.out.println("-------------");
    }

}

ランタイムの結果は以下に掲載されており、正しいコードとエラーコードに分かれています。

  • 正しい結果:
1
2
3
-------------
11
22
33
3
-------------
aa
bb
cc
dd
4
-------------
  • 間違った結果
1
2
3
-------------
[I@15db9742
1
-------------
Exception in thread "main" java.lang.UnsupportedOperationException
    at java.util.AbstractList.add(Unknown Source)
    at java.util.AbstractList.add(Unknown Source)
    at list2array.List2Array.main(List2Array.java:44)
元の記事を10件公開 Likes2 Visits 1926

おすすめ

転載: blog.csdn.net/yuhao22/article/details/53965412