前些天工作中遇到这样一个需求——使用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历史记录封装实现相关推荐

  1. java语言发展历史_Java编程语言的历史和未来

    java语言发展历史 通过AppDynamics解决应用程序问题的速度提高了10倍–以最小的开销在代码级深度监视生产应用程序. 开始免费试用! 作为互联网上著名的编程语言 ,Java对人们如何浏览数字 ...

  2. java解析xml串标签_Java反射解析XML字符串并封装到指定的JavaBean

    在日常的工作中,我们经常需要处理xml格式的字符串,比如:调用第三方接口返回xml信息,需要解析xml获取相应的结果信息,之前自己写过一个利用 Java反射解析XML字符串,并封装到指定的JavaBe ...

  3. java面向对象的特征封装_Java总结-Java面向对象的基本特征之一:封装性

    作者:nyist-tc-岑国玉 来源:牛客网 Java面向对象的基本特征之一:封装性 封装性: 1.封装性的目的:保护某些属性和方法不被外部所看见. //这里说一下自己学linux时老师教我这个封装类 ...

  4. java类注释 写作规范_Java标准注释及规范

    JAVA注释技巧 1.空行和空白字符也是一种特殊注释.利用缩进和空行,使代码与注释容易区 别,并协调美观. 2.当代码比较长,特别是有多重嵌套时,为了使层次清晰,应当在一些段落的 结束处加注释(在闭合 ...

  5. SAP MM 预留单据的历史修改记录?

    SAP MM 预留单据的历史修改记录? 在笔者眼里,SAP系统是一个高度严谨的软件系统.用户在SAP系统里的相关操作,系统都会做记录.用户对于系统的相关单据的增删改,SAP系统都有保留change h ...

  6. java调节音量代码_用Java调用VC音量控制程序_java

    前言 本文通过java的Runtime接口来实现调用其他语言实现的应用程序,进而来实现对计算机硬件信息的监控和控制.本文是多媒体信息系统的一个部分,就是调整计算机音量. 使用VC编写音量控制程序 本控 ...

  7. java 异常捕获抛出_JAVA异常处理捕获与抛出原理解析

    JAVA 异常 当代码运行出现错误导致程序终止运行或出现错误情况的状况,就是异常.异常不是指语法错误,即不属于编译错误,只有运行的程序才会有异常. 这个时候,JAVA 就提供了优秀的处理方法:异常处理 ...

  8. java练习(数组工具类的封装)[目前写过最长的代码,虽然不难]

    java练习(数组工具类的封装)[目前写过最长的代码,虽然不难] package myUtil.arrayUtil;public class ArraysUtil {/*** 升序排列一个byte数组 ...

  9. java socket中的方法_Java中关于Socket的方法与作用详解

    1.java.net.Socket;套接字.封装了TCP通讯协议,使用它可以基于TCP与远端计算机上的服务端应用程序链接并进行通讯. 实例化Socket就是与服务器端建立连接的过程.这里需要传入两个参 ...

  10. JAVA学习基础知识(一)JDK的安装和配置及Java的发展历史

    前言 欢迎阅读本系列文章,本文主要内容为Java的发展历史,以及在电脑上如何配置Java环境.ps:这是第一次发布java语言的文章,若出现错误,望指正. 文章目录 前言 java的发展历史 Java ...

最新文章

  1. iPhone开发应用Sqlite使用手册
  2. html如何让边框变圆,CSS怎样做出自适应圆形边框?
  3. bzoj 4517: [Sdoi2016]排列计数
  4. 论文笔记:Visual Question Answering as a Meta Learning Task
  5. 从零实现深度学习框架——常见运算的计算图
  6. could not find a getter for ... in class ... 异常的解决
  7. 查找算法之三 插值查找(C++版本)
  8. 《Java并发编程实战》 读书勘误
  9. Python 移动文件 文件转移 文件批量移动小工具
  10. windows环境下,搭建RTSP视频推流服务器
  11. android png 动画背景透明,Android透明PNG文件添加底色
  12. Verilog-黑金-扫盲文笔记
  13. C语言例题5: 三角形周长面积
  14. NER项目--github--A Unified MRC Framework for Named Entity Recognition
  15. 2016计算机课程设计,2016年ps课程设计心得体会范文
  16. JavaScript - 语言进阶
  17. 中兴捧月大赛之方案探讨
  18. 最新代千元机!Redmi Note 9正式发布:性能提升100% 1299元起售!
  19. 周期函数的导数周期(含证明)
  20. 五分钟了解GRE是什么,四信GRE相关应用推荐

热门文章

  1. 英语学习详细笔记(十)形容词
  2. 如何撰写商业计划书(精简)
  3. 大地高、正高和正常高的区别
  4. python爬公众号图片,Python爬虫实例:爬取微信公众号图片(表情包)
  5. 基于STM32WIFI远程监控电压电流表(二)电流检测电路
  6. ipv6单播地址包括哪两种类型_IPV6详细讲解
  7. java多级继承_java代码继承------多层继承
  8. netlogo元胞自动机室内疏散
  9. springboot毕设项目流浪动物救助和领养平台e1yqy(java+VUE+Mybatis+Maven+Mysql)
  10. datax底层原理_Datax 任务分配原理