zoukankan      html  css  js  c++  java
  • 转行小白成长路-java篇

    第16章:数组

      数组是一种较为简单的存储。先说一下他的特点:效率高,但是必须指定长度。现在用的也挺少了。因为带泛型的容器更灵活也很安全,虽然效率较低,但是一般开发都不会事先知道有多少个对象,所以用到相对较少。

      我们分析一下数组和容器不同的根本点。看到这里,我们始终也在做的,就是我认为语言共同的部分,就是内存的控制。对于java如果我们做到将它的工作原理都映射到对应的内存的控制之上,我觉的我们就能很快通百家之言,这我们看到的表面和内存控制之间复杂控制就是我们索要了解的,探究的。说的有点远,回到不同点应该就是两者的工作原理不同,具体就是存入时和取出时有一些差异。我们之前分析容器每个对象都会经过上转型成为object型作为引用,存储的时候会将原有信息一并存入,取出时会下转型。而数组不同,数组去掉了上转型和下转型的工作部分,直接存储相关的类型信息,在运行原理上会快一些。再有数组直接指定了堆栈的区域大小,数据紧凑,我们在垃圾回收的时候有想过,数据紧凑自然就会快些(先这样理解,直觉告诉我这里不是这么简单)。

      虽然数组用到少,但是偶尔还是会用到。常用的比较和排序,一般是用匿名内部类的方式。不对,现在匿名内部类用的都少了,改用最新版的stream()和lambda表达式的型式,这个lambad实际上也是一种匿名内部类。举个例子:

    List<Person>  collection = new ArrayList<Person>();
        collection.add(new Person("男"));
        collection.add(new Person("女"));
    
    Stream<Person> streamPerson = collection.stream().filter(
         person -> person.getGender.equals("男")
    )
    
    List onlyMan = streamPerson.collect(toList());

      上面举的容器的例子,但是数组应该也可以使用,原谅对数组没有验证。昨天落下一天应该反思。坚持就应该是一件不间断的事情。没有特殊情况不会有下次。

  • 相关阅读:
    linux权限补充:rwt rwT rws rwS 特殊权限
    关于Linux操作系统下文件特殊权限的解释
    Java学习笔记——Java程序运行超时后退出或进行其他操作的实现
    Java实现 蓝桥杯 算法提高 判断名次
    Java实现 蓝桥杯 算法提高 判断名次
    Java实现 蓝桥杯 算法提高 日期计算
    Java实现 蓝桥杯 算法提高 日期计算
    Java实现 蓝桥杯 算法提高 概率计算
    Java实现 蓝桥杯 算法提高 概率计算
    Java实现 蓝桥杯 算法提高 复数四则运算
  • 原文地址:https://www.cnblogs.com/aiwin/p/12494533.html
Copyright © 2011-2022 走看看