• 浅谈集合框架六——集合扩展:Arrays工具类、集合与数组相互转换方式;


    最近刚学完集合框架,想把自己的一些学习笔记与想法整理一下,所以本篇博客或许会有一些内容写的不严谨或者不正确,还请大神指出。初学者对于本篇博客只建议作为参考,欢迎留言共同学习。

      之前有介绍集合框架的体系概念(http://www.cnblogs.com/yjboke/p/8761195.html),本篇介绍一下集合扩展内容:Arrays工具类的常用方法、集合与数组转换方式


    Arrays是用于操作数组的工具类,里面都是静态方法,现介绍一些常用的方法:

    asList(array):将数组转换为集合;

    sort(array):排序

    binarySearch(array, String str):通过二分法查找元素所在的位置,返回下标(需先进行排序)。

    copyOf(array, int i):拷贝数组,如果长度不够使用0进行补位。

    copyOfRange(array, int i,int j):定义拷贝数组的起始与结束的位置。

    equals(array1, array2):对比是否相等。

    fill(array,"aaa"):基于目标元素填充数组。

    toString:打印数组元素。

    toStream:当数组中包含数组,就需要使用toStream打印。

    deepEquals:深度比较

    deepHashCode:生产HashCode

    deepToString:格式化输出数组

    以下为部分方法的代码输出:

    public static void arrays() {
            String[] str = {"baa","abc","asd"};
            //sort排序
            Arrays.sort(str);
            System.out.println(Arrays.toString(str));    //输出结果为:[abc, asd, baa]
            //binarySearch
            int i = Arrays.binarySearch(str, "baa");
            System.out.println(i);                        //输出结果为:2
            //copyOf
            String[] str2 = Arrays.copyOfRange(str, 0,2);
            System.out.println(Arrays.toString(str2));    //输出结果为[abc, asd]
            //fill
            Arrays.fill(str, "ab");
            System.out.println(Arrays.toString(str));    //输出结果为[ab, ab, ab]
            //deepToString 输出包含数组的数组
            String[] toStr[] = {str, str2,};
            System.out.println(Arrays.deepToString(toStr));//输出结果为:[[ab, ab, ab], [abc, asd]]
        }

    --------------------------------------

    集合数组相互转换:

    数组转换为集合:asList

    好处: 可以使用集合的思想和方法来操作数组中的元素。
    注:将数组变成集合,不可以使用集合的增删方法,因为数组长度是固定的。
    contains,get,indexOf(),subList();等可以使用。
     
    如果数组中的元素都是对象,那么变成集合时,数组中的元素就直接转成集合中的元素。
    如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素存在。

    以下是代码演示:

      public static void main(String[] args) {
            
             asList();
        }
        //将数组转换为集合
        public static void asList() {
            String[] str = {"aaa","abc","asd"};
            //转换方法
            List<String> list = Arrays.asList(str);
            Iterator<String> it = list.iterator();
            while(it.hasNext()) {
                System.out.println(it.next());
            }
            System.out.println(list);
        }

    输出内容为:

    aaa

    abc

    asd

    [aaa, abc, asd]

    ------------------------------------------

    扩展:集合转换为数组:toArray

    以下为代码演示:

      public static void main(String[] args) {
              
             toArray();
        }
        //将集合转换为数组
        public static void toArray() {
            List<String> list = new ArrayList<String>();
            list.add("aaa");
            list.add("abc");
            list.add("bcd");
            System.out.println(list);
            //转换方法
            String[] str = list.toArray(new String[list.size()]);
            System.out.println(str[1]);
            System.out.println(Arrays.toString(str));
        }

    以上。

    如有不严谨或不正确之处还请指出,共同学习。

  • 相关阅读:
    Java中使用Lua脚本语言(转)
    lua、groovy嵌入到java中的性能对比(转)
    有人实践过 Phabricator 以及 Arcanist 作为 code review 的工具么?(转)
    Lua Development Tools (LDT)
    海量数据处理面试题集锦
    三层架构之抽象工厂加反射----实现数据库转换
    八卦一下
    java实现各种数据统计图(柱形图,饼图,折线图)
    activity-alias的使用
    C#反射Assembly 具体说明
  • 原文地址:https://www.cnblogs.com/yjboke/p/8909742.html
Copyright © 2020-2023  润新知