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
     
    待更。。。。。。
     





  • 相关阅读:
    自定义View的ToolBar布局报错Error:(2) No resource identifier found for attribute 'context' in package 'c
    在学git之主分支 branch
    获取发布版SHA1
    关于开启线程与UI的操作
    播放音频和视频(VideoView控件)
    通知栏Notification的应用
    Android 真机调式 Installation failed with message 远程主机强迫关闭了一个现有的连接。. It is possible that this issue is resolved by uninstalling an existing version of the apk if it is present, and then re-installing. WA
    运行程序申请危险权限
    mysql乐观锁总结和实践
    Nginx配置文件nginx.conf中文详解
  • 原文地址:https://www.cnblogs.com/tdyang/p/10793181.html
Copyright © 2011-2022 走看看