数组,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]