基于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的位置要放对,不然会导致数据重复写入。

猜你喜欢

转载自blog.csdn.net/fengzhimohan/article/details/79038480
今日推荐