Java中集合与数组互转总结

1.集合之间,以及集合与数组互转

1.List转换为Array

List<String> list = new ArrayList<String>();
list.add(“1”);
list.add(“2”);
list.add(“3”);
list.add(“4”);
String [] countries = list.toArray(new String[list.size()]);
2.Array转换为List
String[] countries = {“1”, “2”, “3”, “4”};
List list = Arrays.asList(countries);
3.Map转换为List
List<Value> list = new ArrayList<Value>(map.values());
4.Array转换为Set
String [] countries = {“1”, “2”, “3”};      
Set<String> set = new HashSet<String>(Arrays.asList(countries));
System.out.println(set);
5.Map转换为Set
Map<Integer, String> sourceMap = createMap();
Set<String> targetSet = new HashSet<>(sourceMap.values());

特别说明:

  • 采用集合的toArray()方法直接把List集合转换成数组,这里需要注意,不能这样写: 
    String[] array = (String[]) mlist.toArray(); 
    这样写的话,编译运行时会报类型无法转换java.lang.ClassCastException的错误,这是为何呢,这样写看起来没有问题啊 
    因为java中的强制类型转换是针对单个对象才有效果的,而List是多对象的集合,所以将整个List强制转换是不行的 
    正确的写法应该是这样的 
    String[] array = mlist.toArray(new String[0]);
    List<String> mlist = new ArrayList<>();
    mlist.add("zhu");
    mlist.add("wen");
    mlist.add("tao");
    // List转成数组
    String[] array = mlist.toArray(new String[0]);
    // 输出数组
    for (int i = 0; i < array.length; i++) {
        System.out.println("array--> " + array[i]);
    }

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11


2.List<T>转List<String>最佳方法

使用Google的Lists工具类

eg:

    List<Integer>转List<String>

import com.google.common.collect.Lists;
import com.google.common.base.Functions

List<Integer> integers = Arrays.asList(1, 2, 3, 4);

List<String> strings = Lists.transform(integers, Functions.toStringFunction());









  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值