300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Java--数组和集合之间的相互转换

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

时间:2019-02-13 18:22:04

相关推荐

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);}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。