zoukankan      html  css  js  c++  java
  • 关于java集合的一些操作

    1.数组转集合

    java提供了一个方法:Arrays.asList(T... a)的方法。

    测试:

    String[] arr  = {"Lida","huanda","zhangda"};
    //数组转集合list
    System.out.println(Arrays.asList(arr));
    输出结果:
    [Lida, huanda, zhangda]

    这里需要注意的一点是,转出来的集合不能执行新增,删除等操作,如果执行list.add("xxx");会报错
    java.lang.UnsupportedOperationException ,通过查看源码,Arrays.asList()返回new ArrayList<>(a),但这个和ArrayList有一些区别,这里返回的是java.util.Arrays$ArrayList,Arrays的内部类
    部分源码:
    /**
    * @serial include
    */
    private static class ArrayList<E> extends AbstractList<E>
    implements RandomAccess, java.io.Serializable
    {
    private static final long serialVersionUID = -2764017481108945198L;
    private final E[] a;

    ArrayList(E[] array) {
    a = Objects.requireNonNull(array);
    }
    该类继承了AbstractListAbstractList继承了AbstractCollection,AbstractCollection里有add()和remove()方法,但都是抛出一个异常,并没有处理,继承的这些类都没有对这些方法进行重写,所以会报错。
    部分源码:
    public void add(int index, E element) {
    throw new UnsupportedOperationException();
    }

    /**
    * {@inheritDoc}
    *
    * <p>This implementation always throws an
    * {@code UnsupportedOperationException}.
    *
    * @throws UnsupportedOperationException {@inheritDoc}
    * @throws IndexOutOfBoundsException {@inheritDoc}
    */
    public E remove(int index) {
    throw new UnsupportedOperationException();
    }

    2.集合转数组
    例如:list转数组,java提供了两种方法:1.list.toArray();2.list.toArray(T[] a);
    测试:
    //第一种方式
    List<String> list = new ArrayList();

    list.add("lisi");
    list.add("wangwu");
    list.add("zhangsan");
    *String[] str =(String[]) list.toArray();
    //list.toArray()返回的是Object[]类型,这里直接整体强转会报错
    //ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;不能整体进行强转,还是需要单转

    //第二种方式
    List<String> list = new ArrayList();
    list.add("lisi");
    list.add("wangwu");
    list.add("zhangsan");
    String[] arr = new String[list.size()];
    String[] str = list.toArray(arr);
    所以第二种使用时会更加方便。

    补充1:在java8里面有一个String.join()的方法,这个方法在工作中还是蛮实用的,这里可以将集合,数组,或一些元素,以某种间隔符隔开,例如:
    String str2 = String.join(",",list);//将list集合转为字符串,并且以,隔开,输出结果:lisi,wangwu,zhangsan
    
    
    String str2 = String.join(",",arr); //可以是数组,输出结果:lisi,wangwu,zhangsan

    String str2 = String.join(",","lsii","wangwu","zhansan");//还可以直接写字符串,输出结果:lisi,wangwu,zhangsan
     
    待更。。。。。。
     





  • 相关阅读:
    GAMES101作业1:旋转与投影
    ant design vue关于input组件设置只读
    使用事件代理解决v-html点击事件无效
    js替换字符串中的空格,换行符 或 替换成<br>
    vue中ref的使用(this.$refs获取为undefined)
    轮询锁在使用时遇到的问题与解决方案!
    死锁终结者:顺序锁和轮询锁!
    死锁的 4 种排查工具 !
    图解:为什么非公平锁的性能更高?
    抽奖动画
  • 原文地址:https://www.cnblogs.com/tdyang/p/10793181.html
Copyright © 2011-2022 走看看