首页 > java > 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<String> list = new LinkedList<String>();
    
    /**
     * 空参构造
     */
    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 < split.length; 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,就是这么简单!

本文地址:http://blog.zhengshuiguang.com/java/java-history.html

转载随意,但请附上文章地址:-)

标签:历史记录 浏览记录

相关文章

评论已关闭