基于Java使用HashMap<String,List<String>>实现数据的缓存

1.最近任务需要将数据进行不断比较并输出数据,数据是多条,利用HashMap和List结合实现数据缓存。

代码如下:
public class MapTest {

public class MapTest {
    private static HashMap<String,List<String>> mapSave = new HashMap<>();
    public static void main(String args[]) {
        mapSave.clear();
        List<String> list = new ArrayList<>(); //不要将这句写在外面,不然会重复写入数据。
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add(3+"");
        list.add(4+"");
        list.add(5+"");
        String key = Integer.toString(mapSave.size()); //当需要存入多组数据,且组数不知道的时候,可以直接用mapSave.size()替代。
        mapSave.putIfAbsent(key,list); //将数据缓存进去,putIfAbsent是会对key进行排序。无排序可以使用mapSave.put(key,list);
        if(mapSave!=null && mapSave.size()>0) {
            Iterator<Map.Entry<String, List<String>>> it = mapSave.entrySet().iterator(); //利用迭代器循环输出
            List<String> field = new ArrayList<>();
            List<String> value = new ArrayList<>();
            while (it.hasNext()) {
                Map.Entry<String,List<String>> entry=it.next();
                System.out.println("key="+entry.getKey()+","+"value="+entry.getValue());
                field.add(entry.getKey().toString());
                value.add(entry.getValue().toString());
            }
            System.out.println("keyList="+field+","+"valueList="+value); //输出为List类型
        }
    }
}

结果:
key=0,value=[aaa, bbb, ccc, 3, 4, 5]
keyList=[0],valueList=[[aaa, bbb, ccc, 3, 4, 5]]

2.如果是单个数据进行缓存写入和取出,实现起来就简单多了。

代码如下:

public class MapTest {
    private static HashMap<String,Integer> map = new HashMap<>();
    public static void main(String args[]) {
        int a;
        map.clear();   //清空数据
        if(map.isEmpty()){ //判断map是否有数据
            a = 888;
            map.put("first",a); //写入数据
            map.get("first");   //得到数据
        }
        System.out.println(map.get("first"));
}

结果:888

总结:在开发过程中,要注意理解实现内容,List的位置要放对,不然会导致数据重复写入。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值