`
jianchen
  • 浏览: 334369 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java基础复习(10)--链表实现,单例模式

阅读更多

类的构造器也可以实现重载

类的继承体系结构

自动的拆装箱
写程序要考虑向后的兼容性(新特性不能滥用)

链表的实现 (用链表实现堆栈或队列都很方便)
查看jdk LinkedList源码(该实现为双向循环链表)万老师讲的是单向非循环链表:
该类内部使用了一个静态内部类Entry ,相当与今晚上课时讲的Node类

 private static class Entry<E> {
    E element;
    Entry<E> next;
    Entry<E> previous;

    Entry(E element, Entry<E> next, Entry<E> previous) {
        this.element = element;
        this.next = next;
        this.previous = previous;
    }
  }
 



也使用了头结点:

private transient Entry<E> header = new Entry<E>(null, null, null);
    private transient int size = 0;

    /**
     * Constructs an empty list.
     */
    public LinkedList() {
        header.next = header.previous = header;
    }
 

该实现是循环链表 ,从以下代码可知:

 

 public E getLast()  {
    if (size==0)
        throw new NoSuchElementException();

    return header.previous.element;//返回头结点前面的元素即尾节点
    }
 



问题一:如何判断一个链表上存在环?
方法1:
用两个临时变量,步伐不一致,进行遍历列表,如果存在环,则则两个变量总会在某一时刻指向同一节点。
问题二:如何找到环的起点。
有点烦,用数学可以推出来,满足一定的关系。也是相差n圈的问题。

快速排序法很重要啊。

static关键字
static关键字用来修饰变量,方法和内部类,称这些变量,方法和内部类为静态变量,静态方法和静态内部类

static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为“类属性”或“类方法”

如果访问控制权限允许,可不必创建该类对象而直接使用类名加“.”调用

static不可用于修饰构造器

设计模式:
单例设计模式
1,将构造器设为私有,向外提供一个获取单一实例的借口。
运用double check 技术,在多线程环境下保证生成唯一的实例

 

private Singleton instance = null;
private Singleton(){}
public static Singleton getInstance(){
if(instance==null){
    synchronized(Singleton.class) {  
                if (instance == null) {  
                    instance = new Singleton();  
                }  
      }
}
    return instance;
}
}
 


2,静态初始化实例,同时将构造器设为私有,提供返回该实例的借口。
public static Singleton instance = new Singleton();
看到以下写法,不知静态内部类的用意何在?

public class Singleton {  
    static class SingletonHolder {  
        static Singleton instance = new Singleton();  
    }  
       
     public static Singleton getInstance(){  
         return SingletonHolder.instance;  
     }  
 }  
 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics