- 浏览: 179974 次
- 性别:
- 来自: 深圳
-
文章分类
- 全部博客 (104)
- JavaScript备忘 (11)
- Java编程 (23)
- struts框架 (3)
- hibernate框架 (0)
- ibatis框架 (2)
- C++编程 (2)
- 数据库 (8)
- 操作系统 (2)
- Extjs (0)
- 基于web的工作流引擎设计 (0)
- 开发异常备忘 (5)
- 项目管理工具 (6)
- Spring框架 (3)
- HTML (1)
- 项目架构 (1)
- 备忘 (20)
- 设计模式 (9)
- Disruptor (0)
- CQRS (0)
- DDD (0)
- Axon (0)
- JavaScript (1)
- 微信 (0)
- 新浪微博 (1)
- 软件备份 (2)
- AngularJS (1)
- 安全性 (1)
- Linux (2)
- 工具 (4)
- OSGI (1)
- idea (2)
- Docker (1)
- 测试相关 (0)
- WebService (1)
- 数据安全 (0)
- 移动开发 (0)
- springboot (1)
最新评论
-
larryscale:
zz_wangyuhoho 写道你这个工程跑不起来呀我测试过的 ...
Springmvc3+Spring3+MyBatis3 -
zz_wangyuhoho:
你这个工程跑不起来呀
Springmvc3+Spring3+MyBatis3 -
aeolusj:
var myAlert=alert;改为var myAlert ...
js 拦截alert对话框 -
skcks:
建行内部开发平台也是做了一个类似的封装用于ajax远程调用服务 ...
通用Ajax设计 -
qiuyu1990:
这个应该是 DWR的原理吧
通用Ajax设计
Java中的鏈表,分為三種:
1.單向鏈表,由一個節點元素,可以找到相鄰的下一個節點元素.
2.雙向鏈表,由一個節點元素,可以找到其相鄰的前/后節點元素.
3.循環鏈表,由一個節點元素,可以找到其相鄰的前/后節點元素,由最后一個節點元素可以找到第一個節點元素.
有關Java的集合框架的相關知識,請參考 Java API,此處僅用示例來模擬集合框架中[雙向鏈表] 的實現.
1. 定義一個節點類
package collection; public class Node { //下一個節點 private Node next; //前一個節點 private Node prev; //節點中的數據 private Object data; public Node getNext() { return next; } public void setNext(Node next) { this.next = next; } public Node getPrev() { return prev; } public void setPrev(Node prev) { this.prev = prev; } public Object getData() { return data; } public void setData(Object data) { this.data = data; } }
2. 定義一個鏈表類
package collection; public class LinkedNode { //首節點 private Node firstNode = null; //節點的長度 private int size = 0; //添加數據和節點 public void put(Node node, Object data) { //將數據存入節點中 node.setData(data); //設置節點的位置 if (null == firstNode) { firstNode = node; } else { // 查找最后一个节点 Node lastNode = firstNode; // while (null != lastNode.getNext()) { lastNode = lastNode.getNext(); } //設置下一個節點 lastNode.setNext(node); //設置前一個節點 node.setPrev(lastNode); } size++; } //獲取指定位置的節點對象 public Node get(int index) { Node node = firstNode; // if (index != 0) { do { node = node.getNext(); } while (--index > 0); } return node; } //獲取節點長度 public int size() { return size; } }
3. 新建一個測試類
package collection; public class LinkedListTest { public static void main(String[] args) { LinkedNode ln = new LinkedNode(); //定義節點 Node n1 = new Node(); Node n2 = new Node(); Node n3 = new Node(); Node n4 = new Node(); Node n5 = new Node(); Node n6 = new Node(); Node n7 = new Node(); Node n8 = new Node(); Node n9 = new Node(); //往節點中存入數據 ln.put(n1, "aa"); ln.put(n2, "bb"); ln.put(n3, "cc"); ln.put(n4, "dd"); ln.put(n5, "ee"); ln.put(n6, "ff"); ln.put(n7, "gg"); ln.put(n8, "hh"); ln.put(n9, "ii"); Node n = ln.get(3); //當前的節點 System.out.println("當前節點中數據:"+n.getData()); //前一個節點 Node p = n.getPrev(); System.out.println("當前節點的前一個節點中數據:"+p.getData()); //后一個節點 Node next = n.getNext(); System.out.println("當前節點的后一個節點中數據:"+next.getData()); } }
4. 運行結果如下
发表评论
-
Springboot项目(整合WebService带协议头验证+WebSocket+Web+动态日志输出)
2020-05-12 14:05 1137环境配置: springboot 1.5.14 ... -
activiti5.18 默认查询的sql生成两个order by
2019-10-17 12:14 399<spring.version>4.2.4.RE ... -
springboot 定时任务重复执行
2019-06-04 17:35 2214开发一数据接收WebService,里面用到定时任务@Sc ... -
mybatis-generator自动生成代码[增加Service的生成]
2016-03-22 10:08 9920源码包见附件[Maven项目,在1.3.2基础上修改官方源码] ... -
网络状态监控
2014-06-27 12:56 647import java.io.BufferedReader; ... -
Spring MVC+Jquery Ajax 前后台传递Json对象
2014-03-29 10:02 6153关于Spring MVC3.X 接收和返回Json ... -
同时启动多个Tomcat服务器
2013-10-25 17:15 602我所用Tomcat服务器都为zip版,非安装版。以两个为例: ... -
md5+BASE64加密
2013-10-08 23:20 990import sun.misc.BASE64Encoder; ... -
用MD5对密码进行加密
2013-08-10 15:21 1033package com.yong.bin.md5; i ... -
把CST格式的字符串转成普通的日期格式
2013-02-27 15:58 1601public static void main(Str ... -
Springmvc3+Spring3+MyBatis3
2012-11-27 15:03 1395最近写的一个三层框架:Springmvc3+Spring3+ ... -
Java技术——内部类
2012-11-18 17:35 940内部类 (inner class) 定义:在一个类中定义 ... -
自定义标签
2012-10-26 17:13 0<?xml version="1.0" ... -
log4j.properties
2012-10-24 12:32 0log4j.rootLogger=INFO, log4j ... -
通用Ajax设计
2012-10-21 10:20 2029利用Servlet和反射技术实现通用的Ajax调用设计,如下: ... -
导入Jar包的快捷键
2012-07-02 22:47 1186导入当前光标所在的地方未导入的Jar包: shift+ctrl ... -
Extjs grid 后台
2012-05-22 08:16 0public String gridRecordsByXML( ... -
Extjs 布局
2012-04-18 12:27 0<%@ page language="java ... -
FreeMarker在java项目中的应用
2011-02-15 21:34 3220一、体验FreeMarker FreeMar ... -
动态代理 [用cglib实现]
2011-02-09 10:28 1254一. 用cglib 实现java 的動態代理 ...
相关推荐
双向链表在很多场景下都有应用,如LRU缓存淘汰策略、实现高效有序集合(如跳表)、模拟浏览器历史记录等。理解并熟练掌握双向链表的原理和操作,对于提升编程能力,特别是数据结构和算法的理解,有着极大的帮助。 ...
`LinkedList` 也是 `List` 接口的一种实现,它使用双向链表来存储元素。这使得插入和删除操作变得非常高效,但随机访问元素则相对较慢。 `LinkedList` 可以被用来实现栈和队列的功能。例如,可以使用 `addFirst()` ...
LinkedList是一个双向链表,它支持快速的元素插入和删除,这使得它成为实现栈功能的理想选择。 首先,`HashtableDemo1.java`可能是一个示例代码,演示了如何使用Java的Hashtable类。Hashtable是一个同步的键值对...
LinkedList则基于双向链表,适合频繁的插入和删除操作。 7.1.1 Java 集合体系概述 - Collection接口常用方法:add(), addAll(), clear(), contains(), isEmpty(), iterator(), remove(), size()和toArray()等,...
- **LinkedList**:基于双向链表实现,适合频繁的插入和删除操作。 - **Vector**:类似于 `ArrayList`,但它是线程安全的。 - **Stack**:继承自 `Vector`,模拟栈的行为,支持后进先出的操作。 - **核心方法**...
Java集合框架是Java编程语言中的一个核心组成部分,它为数据结构和对象的存储、管理和操作提供了统一的接口和实现。在面试中,尤其对于大型公司,深入理解Java集合类是评估开发者技能的关键指标。以下是一些大公司常...
- **LinkedList**:双向链表实现,插入和删除操作更快。 - **Vector**:与ArrayList类似,但它是线程安全的。 - **Set**:不允许重复元素的无序集合。 - **HashSet**:底层使用哈希表实现,不保证元素的顺序。 ...
- **LinkedList**:双向链表实现的List接口,适合频繁插入删除操作。 - **Vector**:与ArrayList类似,但线程安全,效率较低。 - **Stack**:继承自Vector的一个特殊类,实现了后进先出(LIFO)的数据结构,主要...
ArrayList基于动态数组,提供快速随机访问,而LinkedList通过双向链表实现,插入和删除操作效率较高。在实验中,我们可能会涉及到向List中添加元素、排序以及遍历等操作。 Set接口则不允许元素重复,HashSet和...
- `LinkedList`:双向链表实现,适合频繁的插入和删除操作,线程不安全。 - `Vector`:与`ArrayList`类似,但线程安全,性能略低。 - `Stack`:基于`Vector`的后进先出(LIFO)数据结构,继承自`Vector`。 #### Set...
- `LinkedList`:基于双向链表的数据结构,适合频繁进行插入和删除操作。 - `HashSet`:不保证集合中元素的顺序,适合快速查找。 - `TreeSet`:基于红黑树的数据结构,可以保持集合中的元素处于排序状态。 #### ...
- `LinkedList`:基于双向链表实现,适合频繁插入和删除操作。 - 支持默认构造方法和将现有集合转换为`LinkedList`的方法。 - `Stack`:基于`Vector`实现,模拟栈的基本操作,如`push`和`pop`。 #### Set详解 `...
LinkedList则通过双向链表实现,插入和删除速度快,但随机访问性能较差。 2. **HashSet和TreeSet**:HashSet基于HashMap实现,存储无序、不重复的元素,查找速度快。TreeSet由TreeMap支撑,保持元素排序,可以是...
- `LinkedList`: 基于双向链表实现,不支持随机访问。 - **性能**: - `ArrayList`: 查询快,插入和删除慢。 - `LinkedList`: 查询慢,插入和删除快。 - **空间消耗**: - `ArrayList`: 由于需要预留额外空间以备...
- **LinkedList**:基于双向链表实现,支持快速插入和删除,但随机访问速度慢。可以被用作堆栈或队列。 - **ArrayList**:基于动态增长的数组实现,查询速度快,但插入和删除操作相对慢。使用`Collections....
2. **LinkedList**:基于双向链表实现的集合类,插入和删除元素速度快,但访问元素的效率相对较低。实验中同样用于存储Product对象,但未展示其特有的操作。 3. **TreeSet**:实现了SortedSet接口的集合类,内部...
LinkedList基于双向链表实现,对于中间位置的插入和删除操作效率较高,但遍历速度慢于ArrayList。 **Map映射** Map接口是一个键值对(Key-Value)存储的集合,每个键都是唯一的,可以对应一个或多个值。Map接口的...
主要实现有`ArrayList`(基于数组)、`LinkedList`(基于双向链表)。 - **Set**:不允许重复元素的集合。主要实现有`HashSet`(基于哈希表)、`TreeSet`(基于红黑树)。 - **接口与实现**: - `List`接口的主要...
- **双向链表**:探讨双向链表的结构及其在实际应用中的优势。 - **线性表的单链表实现**:详细说明如何使用单链表来实现线性表。 - **两种实现的对比** - **基于时间的比较**:分析顺序表和链表在不同操作下的...
- `LinkedList`:基于双向链表实现的列表,适合频繁插入和删除操作。 - `Set`:不允许重复元素的集合。 - `HashSet`:基于哈希表实现的集合,提供了良好的性能。 - `TreeSet`:基于红黑树实现的集合,支持排序。...