您的位置:首页 > 职场人生

黑马程序员-------关于数组、List集合、Set集合相互转化

2014-10-14 15:51 169 查看
在日常的开发中,我们经常要将集合、数组相互转化,那么如何快速实现呢?查看api文档我们可以发现Java本身已经为我们封装好了相关的方法,只是我们没有发现

首先是数组与List的转换,api文档中,List中有一个toArray()和toArray(T[] t),前者返回的是一个数组对象,后者是一个可以指定返回数组类型的方法,使用后者即可避免前者的强转;

小demo,简单易懂

/**

* List集合转换为数组

*/

private static void list2Array() {

List<String> list = new ArrayList<String>();//集合中只能存放引用类型和String,so这里用String代表下

list.add("sa");

list.add("pa");

list.add("we");

String[] str = list.toArray(new String[0]);//

for (String s : str) {

System.out.println(s);

}

}

我们可以发现简单一行代码就可以实现:

for(int i = 0; i < list.size();i++){

str[i] = list.get(i);

}

的赋值操作。。。。。。。。

数组转换为List集合呢?其实Java显然是考虑到了我们的需求,所以在数组中我们提供了静态方法
asList(T... a),通过这个方法,我们可以发现,一切都变得简单的多了


/**

* 数组转换为List集合

*/

private static void array2List() {

String[] s = { "as", "zx", "vf" };

List<String> list = Arrays.asList(s);//不同于List-->数组,这里是静态方法

for (String str : list) {

System.out.println(str);

}

}


相对于数组来说,有的时候我们需要对数组中的数据去重,显然List集合本身不提供这个功能,这时,我们自然想到了set集合,set集合内部存储是采用hash算法,数据是无序、不可重复的,好在set集合同样提供了这个功能,因此,我们又可以避免大量的无用操作啦。。。

/**

* set集合转换为数组

*/

private static void set2Array() {

Set<String> list = new HashSet<String>();

list.add("sa");

list.add("pa");

list.add("we");

String[] str = list.toArray(new String[0]);

for (String s : str) {

System.out.println(s);

}

}

可是我们自然想到了,将数组转换为set集合,查看api,惨了没有我们预想的asSet(T ..t),其实这也没什么可担心的,因为数组既然可以通过asList(T..)转换为List集合,同时Set集合的构造方法可以传入一个list集合达到初始化的目的,我们自然可以通过这两个方法,实现数组-->集合的转换

/**

* 数组转换为Set集合,主要用于去除相同的项

*/

private static void array2Set() {

String[] s = { "as", "zx", "vf" };

Set<String> set = new HashSet<String>(Arrays.asList(s));

for (String str : set) {

System.out.println(str);

}

}

哈哈,这么就简单实现了数组与单列集合的相互转换啦,在这里,还有一点要说明的是:如果真的要将基本数据类型的数组,转换为集合,我们可以通过他们的包装类实现,比如:Integer、Float等实现方法同上。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: