java怎么实现历史修改记录_java历史记录封装实现
前些天工作中遇到这样一个需求——使用cookie记录浏览记录。java可以通过LinkedList完成两端操作,于是很快就封装了一个比较好的历史记录工具类:package com.zhengshuiguang.blog;
import java.util.LinkedList;
public class HistoryList {
private int listSize = 3;
private String seperator = "-";
private LinkedList list = new LinkedList();
/**
* 空参构造
*/
public HistoryList() {
super();
}
/**
* 通过历史记录值进行初始化
* @param value
* @param seperator
*/
public HistoryList(String value, String seperator) {
super();
this.seperator = seperator;
if(value != null) {
// 切割value字符串
String[] split = value.split(seperator);
for (int i = 0; i
if(!list.contains(split[i])) {
list.add(split[i]);
}
}
}
}
/**
* 添加记录
* @param string
*/
public void add(String string) {
// 先查找元素是否存在于list中
if(list.contains(string)) {
// 将该元素从list中移除
list.remove(string);
}else{
// 判断list的长度是否超过listSize
if(list.size() >= listSize) {
// 删除最后一个元素
list.removeLast();
}
}
// 添加到元素的头部
list.addFirst(string);
}
/**
* 删除指定值的元素
* @param string
* @return
*/
public boolean remove(String string) {
return list.remove(string);
}
/**
* 转换为字符串
*/
public String toString() {
StringBuilder sb = new StringBuilder();
for (String string : list) {
sb.append(string+"-");
}
return sb.length() > 0 ? sb.toString().substring(0, sb.length()-1) : "";
}
//=====================get/set=====================
public int getListSize() {
return listSize;
}
public void setListSize(int listSize) {
this.listSize = listSize;
}
public String getSeperator() {
return seperator;
}
public void setSeperator(String seperator) {
this.seperator = seperator;
}
}
实现原理很简单,操作方法更简单:package com.zhengshuiguang.blog;
public class Demo {
public static void main(String[] args) {
// 创建一个空的历史记录对象
HistoryList list = new HistoryList();
list.add("1");
list.add("3");
list.add("1");
list.add("4");
// 转换为字符串
System.out.println(list.toString());
// 通过一个历史记录字符串创建对象
String history = "1-3-1-4";
list = new HistoryList(history, "-");
System.out.println(list.toString());
}
}
OK,就是这么简单!
转载随意,但请附上文章地址:-)
java怎么实现历史修改记录_java历史记录封装实现相关推荐
- java语言发展历史_Java编程语言的历史和未来
java语言发展历史 通过AppDynamics解决应用程序问题的速度提高了10倍–以最小的开销在代码级深度监视生产应用程序. 开始免费试用! 作为互联网上著名的编程语言 ,Java对人们如何浏览数字 ...
- java解析xml串标签_Java反射解析XML字符串并封装到指定的JavaBean
在日常的工作中,我们经常需要处理xml格式的字符串,比如:调用第三方接口返回xml信息,需要解析xml获取相应的结果信息,之前自己写过一个利用 Java反射解析XML字符串,并封装到指定的JavaBe ...
- java面向对象的特征封装_Java总结-Java面向对象的基本特征之一:封装性
作者:nyist-tc-岑国玉 来源:牛客网 Java面向对象的基本特征之一:封装性 封装性: 1.封装性的目的:保护某些属性和方法不被外部所看见. //这里说一下自己学linux时老师教我这个封装类 ...
- java类注释 写作规范_Java标准注释及规范
JAVA注释技巧 1.空行和空白字符也是一种特殊注释.利用缩进和空行,使代码与注释容易区 别,并协调美观. 2.当代码比较长,特别是有多重嵌套时,为了使层次清晰,应当在一些段落的 结束处加注释(在闭合 ...
- SAP MM 预留单据的历史修改记录?
SAP MM 预留单据的历史修改记录? 在笔者眼里,SAP系统是一个高度严谨的软件系统.用户在SAP系统里的相关操作,系统都会做记录.用户对于系统的相关单据的增删改,SAP系统都有保留change h ...
- java调节音量代码_用Java调用VC音量控制程序_java
前言 本文通过java的Runtime接口来实现调用其他语言实现的应用程序,进而来实现对计算机硬件信息的监控和控制.本文是多媒体信息系统的一个部分,就是调整计算机音量. 使用VC编写音量控制程序 本控 ...
- java 异常捕获抛出_JAVA异常处理捕获与抛出原理解析
JAVA 异常 当代码运行出现错误导致程序终止运行或出现错误情况的状况,就是异常.异常不是指语法错误,即不属于编译错误,只有运行的程序才会有异常. 这个时候,JAVA 就提供了优秀的处理方法:异常处理 ...
- java练习(数组工具类的封装)[目前写过最长的代码,虽然不难]
java练习(数组工具类的封装)[目前写过最长的代码,虽然不难] package myUtil.arrayUtil;public class ArraysUtil {/*** 升序排列一个byte数组 ...
- java socket中的方法_Java中关于Socket的方法与作用详解
1.java.net.Socket;套接字.封装了TCP通讯协议,使用它可以基于TCP与远端计算机上的服务端应用程序链接并进行通讯. 实例化Socket就是与服务器端建立连接的过程.这里需要传入两个参 ...
- JAVA学习基础知识(一)JDK的安装和配置及Java的发展历史
前言 欢迎阅读本系列文章,本文主要内容为Java的发展历史,以及在电脑上如何配置Java环境.ps:这是第一次发布java语言的文章,若出现错误,望指正. 文章目录 前言 java的发展历史 Java ...
最新文章
- iPhone开发应用Sqlite使用手册
- html如何让边框变圆,CSS怎样做出自适应圆形边框?
- bzoj 4517: [Sdoi2016]排列计数
- 论文笔记:Visual Question Answering as a Meta Learning Task
- 从零实现深度学习框架——常见运算的计算图
- could not find a getter for ... in class ... 异常的解决
- 查找算法之三 插值查找(C++版本)
- 《Java并发编程实战》 读书勘误
- Python 移动文件 文件转移 文件批量移动小工具
- windows环境下,搭建RTSP视频推流服务器
- android png 动画背景透明,Android透明PNG文件添加底色
- Verilog-黑金-扫盲文笔记
- C语言例题5: 三角形周长面积
- NER项目--github--A Unified MRC Framework for Named Entity Recognition
- 2016计算机课程设计,2016年ps课程设计心得体会范文
- JavaScript - 语言进阶
- 中兴捧月大赛之方案探讨
- 最新代千元机!Redmi Note 9正式发布:性能提升100% 1299元起售!
- 周期函数的导数周期(含证明)
- 五分钟了解GRE是什么,四信GRE相关应用推荐
热门文章
- 英语学习详细笔记(十)形容词
- 如何撰写商业计划书(精简)
- 大地高、正高和正常高的区别
- python爬公众号图片,Python爬虫实例:爬取微信公众号图片(表情包)
- 基于STM32WIFI远程监控电压电流表(二)电流检测电路
- ipv6单播地址包括哪两种类型_IPV6详细讲解
- java多级继承_java代码继承------多层继承
- netlogo元胞自动机室内疏散
- springboot毕设项目流浪动物救助和领养平台e1yqy(java+VUE+Mybatis+Maven+Mysql)
- datax底层原理_Datax 任务分配原理