Java

  • 单链表倒序

    package cn.bingoogolapple.adpn.linkedlist;
    
    import cn.bingoogolapple.adpn.model.Node;
    
    /**
     * 作者:王浩 邮件:bingoogolapple@gmail.com
     * 创建时间:2017/8/9 下午2:45
     * 描述:单链表倒序
     */
    public class Reverse {
        private Reverse() {
        }
    
        /**
         * 不使用已有集合单链表倒序
         *
         * @param header
         * @return
     
  • 饿汉式

    饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变

    package cn.bingoogolapple.designpattern.singleton;
    
    /**
     * 作者:王浩 邮件:bingoogolapple@gmail.com
     * 创建时间:2017/8/7 上午8:56
     * 描述:饿汉式
     */
    public class SingletonA {
        private static SingletonA instance = new SingletonA();
    
        /**
         * 构造方法必须是私有的
         */
    
  • 泛型类型擦除

    • Java 的泛型是在编译器层次实现的
    • 在编译生成的字节码中不包含泛型中的类型参数,类型参数会在编译时去掉。例如:List 和 List 在编译后都变成 List
    • 由于泛型并不是从 Java 诞生就存在的一个特性,而是等到 Java SE 5 才被加入的,所以为了兼容之前并未使用泛型的类库和代码,不得不让编译器擦除掉代码中有关于泛型类型信息的部分,这样最后生成出来的代码其实是泛型无关的
    • 编译时更强大的类型检测。Java 编译器对泛型应用了强大的类型检测,如果代码违反了类型安全就会报错。修复编译时错误比修复运行时错误更加容易,因为运行时错误很难查找到
    • 类型参数只能是类,例如 Lis
  • 认识函数式接口
    增强的接口
    最简单的Lambda入门教程

  • 重写equals()时为什么也得重写hashCode()之深度解读equals方法与hashCode方法渊源(上)

    重写equals()时为什么也得重写hashCode()之深度解读equals方法与hashCode方法渊源(下)

    Object 的 equals 方法默认是比较内存地址是否相等

    public boolean equals(Object obj) {
        return (this == obj);
    }

    String 重写了 equals 方法的,如果对象的内存地址相等则相等,否则比较每一个字符

    public boolean equals(Object anObject