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

在日常的开发中,我们经常要将集合、数组相互转化,那么如何快速实现呢?查看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等实现方法同上。。。。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值