Java中数组与LinkedList的相互转换

数组,LinkedList:双向链表
数组便于查找,链表便于插入。两个各有千秋,讲两者之间的优点的博客很多,但是怎样转换的博客却少见。所以在这里,我只是总结一下,Java中怎样调用类库函数,完成两者间相互转换。

数组转LinkedList

LinkedList linklist=new LinkedList(Arrays.asList(array));

LinkedList转数组

方法一:String[]  array1= (String[]) linklist.toArray(new String [0]);


方法二:String[] array2= new String[linklist.size()];
       linklist.toArray(array2); 

数组转换链表的是调用了Arrays.asList方法

static List asList(T… a)
返回由指定数组支持的固定大小的列表。

链表转数组有两个方法的原因LinkedList的两种toArray方法:

Object[] toArray()
以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组。

T[] toArray(T[] a)
以正确的顺序返回一个包含此列表中所有元素的数组(从第一个到最后一个元素); 返回的数组的运行时类型是指定数组的运行时类型。

测试的代码

		String[] planets=new String[]{"Mecury","Venus","Earth","Mars","Jupiter","Saturn","Uranus","Neptune"};
         LinkedList linklisted=new LinkedList(Arrays.asList(planets));

        linklisted.add(3,"Position");
        System.out.println("linkdelist"+linklisted.toString());

        String[] newPlanets1= (String[]) linklisted.toArray(new String [0]);
        System.out.println("ArrayList1"+Arrays.toString(newPlanets1));

        String[] newPlanets2= new String[linklisted.size()];
        linklisted.toArray(newPlanets2);
        System.out.println("ArrayList2"+Arrays.toString(newPlanets2));

测试结果

linkdelist[Mecury, Venus, Earth, Position, Mars, Jupiter, Saturn, Uranus, Neptune]
ArrayList1[Mecury, Venus, Earth, Position, Mars, Jupiter, Saturn, Uranus, Neptune]
ArrayList2[Mecury, Venus, Earth, Position, Mars, Jupiter, Saturn, Uranus, Neptune]

你可能感兴趣的:(集合)