`

摒弃浮躁,回顾基础,再拜读一下Jive

    博客分类:
  • java
阅读更多
http://hi.baidu.com/zk_ajax/blog/item/8efd7fc77b5a5dddd10060f8.html

感觉毕业以来自己都比较浮躁,以前想研究Jive系统的,但后来在网上看到有人说过时了,近来没事,看了部分代码,感觉写的相当漂亮,先撇开设计模式不说,我今天分析一下lastComma它里面的链表的实现:
public class LinkedListNode {
	public LinkedListNode previous;
	public LinkedListNode next;
	public Object object;

	public LinkedListNode(Object object, LinkedListNode previous,
			LinkedListNode next) {
		this.previous = previous;
		this.next = next;
		this.object = object;
	}

	public void remove() {
		previous.next = next;
		next.previous = previous;
	}

	@Override
	public String toString() {
		return object.toString();
	}

	public LinkedListNode getPrevious() {
		return previous;
	}

	public void setPrevious(LinkedListNode previous) {
		this.previous = previous;
	}

	public LinkedListNode getNext() {
		return next;
	}

	public void setNext(LinkedListNode next) {
		this.next = next;
	}

	public Object getObject() {
		return object;
	}

	public void setObject(Object object) {
		this.object = object;
	}
}


链表类:
public class LinkedList {
	private LinkedListNode head = new LinkedListNode("head", null, null);

	public LinkedList() {
		head.previous = head.next = head;
	}

	public LinkedListNode getFirst() {
		LinkedListNode node = head.next;
		if (node == head) {
			return null;
		}
		return node;
	}

	public LinkedListNode getLast() {
		LinkedListNode node = head.previous;
		if (node == head) {
			return null;
		}
		return node;
	}

	public void addFirst(LinkedListNode node) {
		node.next = head.next;
		node.previous = head;
		node.next.previous = node;
		node.previous.next = node;
	}

	public void addFirst(Object object) {
		LinkedListNode node = new LinkedListNode(object, head, head.next);
		node.next.previous = node;
		node.previous.next = node;
	}

	public void addLast(Object object) {
		LinkedListNode node = new LinkedListNode(object, head.previous, head);
		node.previous.next = node;
		node.next.previous = node;
	}

	public void clear() {
		LinkedListNode node = getLast();
                //把head也释放一下,我感觉这个比较高明,我实现的时候肯定head就忘记
                //释放了,造成内存泄露。
		while (node != null) {
			node.remove();
			node = getLast();
		}
		head = head.next = head.previous;
	}
	
	public void add(Object object){
		addLast(object);
	}
 
       
	public String toString() {
		LinkedListNode node = head.next;
		StringBuffer buffer = new StringBuffer();
		buffer.append("[");
                // 把head不打印出来
		while (node != head) {
			buffer.append(node.toString() + ",");
			node = node.next;
		}
                // 这个是我自己加的,仿照List的toString,两边加上[],并且删除
                // 最后一个,
		int lastComma = -1;
		if((lastComma = buffer.lastIndexOf(",")) != -1){
			buffer.deleteCharAt(lastComma);
		}
		buffer.append("]");
		return buffer.toString();
	}

}
分享到:
评论

相关推荐

    java学习必学系统--jive

    首先,我们来了解一下Jive的基本概念。Jive基于Java技术构建,采用了服务导向架构(SOA),支持RESTful API,这使得它能够轻松地与其他系统集成。Jive的主要组件包括内容管理系统、论坛、博客、任务和项目管理工具,...

    Jive的安装指导。

    ### Jive(Jdon)安装详细指导 #### 一、前言 Jive是一款知名的开源社区软件,被广泛应用于企业内部沟通平台以及外部客户互动平台。本文档将详细讲解如何在Linux环境下安装配置Jive,包括数据库设置、Tomcat服务器...

    jive论坛源码,jive项目源码,jive源码

    jive论坛源码,jive项目源码,jive源码,Jive是国外一个非常著名的BBS程序,完全开放源码.jive论坛源码,jive项目源码,jive源码,Jive是国外一个非常著名的BBS程序,完全开放源码.jive论坛源码,jive项目源码,jive源码,...

    Jive java版源码

    《Jive Java版源码深度解析与设计模式探讨》 Jive是一款著名的社交软件平台,其Java版本的源码对于开发者来说,是一份极其宝贵的参考资料。深入研究Jive的源码,不仅可以帮助我们理解大型社交系统的架构设计,也能...

    jive论坛研究-jive源码

    jive forums 设计模式 Version: 3.2.9 Below is a list of known issues affecting this release of Jive Forums (3.2.9).

    Jive--SourceFile

    首先,让我们关注一下Jive的核心组件: 1. **skins**: 这个目录包含Jive的界面皮肤和样式。了解这部分源码可以帮助我们理解如何自定义Web应用程序的UI,包括布局、颜色方案和图标等。通过研究CSS、HTML和JavaScript...

    jive 2.5 源代码

    《深入剖析Jive 2.5源代码:安装与研究指南》 Jive是一款功能强大的社交网络软件,它为企业提供了一个全面的协作平台,让用户能够进行沟通、分享知识和协同工作。在这里,我们重点关注的是Jive 2.5版本的源代码。源...

    最早最经典的Jive论坛开源 源码

    《Jive论坛开源源码深度解析》 Jive论坛,作为一个早期且经典的开源社区平台,对许多Java开发者来说,无疑是一份宝贵的参考资料。在Jive 1.3之后,其源码不再对外公开,但1.2版本的开源源码仍能为我们揭示社区软件...

    Jive论坛1.2.4版

    Jive论坛的优点 是由于采用缓冲机制,可以承受巨大访问量,同时能保持快速反应,在国外站点采用很多。 主要功能如下: 快速的缓存功能,将经常访问的帖子保存在内存中,实现快速访问, 可通过Web管理界面动态...

    学习JavaEE的两个著名工程PetStore和Jive论坛二合一

    在JavaEE的学习过程中,有两个著名的示例项目,即PetStore和Jive论坛,这两个项目都是JavaEE开发的经典案例,有助于初学者理解并掌握JavaEE的核心概念和技术。 PetStore项目: 1. **MVC设计模式**:PetStore项目...

    Jive eclipse Jive eclipse

    《Jive Eclipse:深入探索企业协作与开发工具》 Jive Eclipse是一款专为开发者设计的集成开发环境(IDE),它将Jive的社交协作功能与Eclipse的强大开发工具集融为一体,旨在提升团队间的沟通效率和代码质量。在本文...

    Jive论坛

    **Jive论坛**是一款强大的企业社交网络平台,尤其在国际上广泛应用,因其高效能和用户友好性而备受赞誉。它的核心优点在于其采用的缓冲机制,这种机制使得Jive论坛能够在面临大规模用户访问时仍能保持稳定且快速的...

    jive 2.1.1

    《Jive 2.1.1:探索设计模式的精华》 Jive,作为一个历史悠久的论坛软件,以其独特的社区构建能力和交互...设计模式的学习不仅仅是为了理解Jive,更是为了提升我们解决复杂问题的能力,为未来的开发工作打下坚实基础。

    jive.chm

    系统设计 1 jive设计思路 2 jive的工作内幕 3 Jive源代码研究 4 Jive中的设计模式 5 jive学习笔记 <br> 设计模式 1 大道至简-Java之23种模式一点就通 2 设计模式...

    Jive源代码.zip

    《Jive源代码深度解析》 Jive源代码,作为一款知名的开源社交网络平台,其背后的编程艺术和设计理念,对于理解和构建大型企业级社交应用具有重要价值。本篇将深入探讨Jive源代码的核心概念、架构设计以及主要功能...

    Jive论坛分析_完整版

    - **设计模式变通**:Jive在应用设计模式时并没有完全遵循《设计模式:可复用面向对象软件的基础》(Gang of Four, GOF)中的实现方式,而是根据实际需求进行了适当的调整。 - **面向接口编程**:这种模式不仅提高了...

    Jive论坛原代码.rar

    《深入剖析Jive论坛原代码:JAVA设计模式的实践与理解》 Jive论坛是一款知名的社区软件,其原代码开放给开发者,为学习和研究JAVA设计模式提供了宝贵的资源。通过研究Jive论坛的源代码,我们可以深入了解JAVA在大型...

    jive安装实例jive安装实例jive安装实例

    ### jive安装实例详解 #### 环境配置与需求 根据给定的文件信息,本次jive安装实例将在以下环境中进行: - 操作系统:Windows 2000 Server - Java 开发工具包(JDK)版本:1.4.1 - 应用服务器:JBoss 4.0.6 - Jive...

    开源程序Jive

    开源程序Jive是Java开发领域中的一个重要组成部分,尤其对于初学者和希望提升Java技能的开发者而言,它是一个宝贵的资源。Jive不仅仅是一个简单的程序,而是一个功能强大的框架,旨在简化Java应用程序的开发过程,...

Global site tag (gtag.js) - Google Analytics