类的构造器也可以实现重载
类的继承体系结构
自动的拆装箱
写程序要考虑向后的兼容性(新特性不能滥用)
链表的实现
(用链表实现堆栈或队列都很方便)
查看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;
}
}
分享到:
相关推荐
学生信息管理系统---链表实现
Java栈的实例-数组和链表两种方法 数组和链表.pdf
一、基础数据结构-1.链表-2.静态链表
哈希表--链表 哈希表--链表 哈希表--链表 哈希表--链表哈希表--链表 哈希表--链表哈希表--链表 哈希表--链表哈希表--链表 哈希表--链表哈希表--链表 哈希表--链表
严蔚敏-数据结构--链表实现c++实现 还不错哦!``
一、用链表或者顺序表实现以下系统,完成线性表的建立(至少包括10个结点),以及线性表中信息(结点)的插入、查找、删除、修改、输出等操作,具体的模块要求见上方的“总的模块要求”。建议用“文件”存储数据。 1...
主要介绍了java链表应用--基于链表实现队列,结合实例形式分析了java基于链表实现队列尾指针相关操作使用技巧,需要的朋友可以参考下
实现双向链表的定义,冒泡排序,插入,删除,输出,反向。
Java 数据结构 链表 Java链表 数据结构链表
pythonlist是数组还是链表实现的-数组和链表结构(python)-1 数组和链表.pdf
C语言开发----链表HuffmanTree
Java语言编写的数据结构-链表实现。包括顺序表和单链表、双链表
Java数组链表效率-Java数组和链表三种遍历效率对比 数组和链表.pdf
链表构造
基础编程-双向循环链表的一些操作-C
数据结构--双链表的操作---带头节点
数据结构,线性链表的C实现。 了解和掌握线性链表的逻辑结构,掌握线性链表的基本算法及相关的应用。
数据结构实验三-有关线性链表的操作,建立线性链表,初始化线性链表,插入元素,删除元素,清空线性链表,摧毁线性链表