转行小白成长路-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());

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

原文地址:https://www.cnblogs.com/aiwin/p/12494533.html