DBMNG数据库管理与应用

抓住自己最有兴趣的东西,由浅入深,循序渐进地学……
当前位置:首页 > 数据库基础 > DB4O

基于DB4O的JavaMap

from:http://blog.csdn.net/arjick/article/details/7652879\

Java的Map是大家最常用的一个容器接口,它通过灵活的key/value结构存储数据。因为Map的简单易用很多工程师喜欢大量使用Map存放数据。但是Map的数据是存放在内存中,大量的数据存在内存中,不只是造成Java系统内存遍历慢的隐忧,更加可能系统内存溢出。
针对这个问题,我们重新利用DB4O实现Map的接口,利用DB4O的对象高效的物理存储特性来减轻Java的内存压力。
        大概逻辑图如下:






操作例子
[java] view plaincopy
package com.shine.framework.DB4o.example;  
  
import java.util.HashMap;  
import java.util.Map;  
  
import com.shine.framework.DB4o.util.DB4oMap;  
  
public class DB4oMapExample {  
  
    /** 
     * @param args 
     */  
    public static void main(String[] args) {  
        /**=========== 简单对象存储 ============*/  
        DB4oMap<String, Object> map = new DB4oMap<String, Object>(true);  
        // 添加数据  
        System.out.println(map.put("key1", "value1"));  
        System.out.println(map.put("key1", "value2"));  
        System.out.println(map.put("key1", "value3"));  
        System.out.println(map.put("key1", "value4"));  
        System.out.println(map.put("key2", "value2"));  
        System.out.println(map.put("key3", "value3"));  
        System.out.println(map.put("key4", "value4"));  
        // 检查数据  
        System.out.println(map.containsKey("key1"));  
        System.out.println(map.containsValue("value1"));  
        System.out.println(map.isEmpty());  
        // 获取单条数据  
        System.out.println(map.get("key2"));  
        // 删除单条数据  
        System.out.println(map.remove("key1"));  
        System.out.println(map.remove("key4", "value4"));  
        // 删除所有数据  
        map.removeAll("key2");  
        // 查询所有数据  
        for (Object obj : map.getAll()) {  
            System.out.println(obj);  
        }  
        // 遍历所有键  
        for (String key : map.keySet()) {  
            System.out.println(key);  
        }  
        // 遍历所有值  
        for (Object value : map.values()) {  
            System.out.println(value);  
        }  
        // 遍历所有的键值对  
        for (Map.Entry<String, Object> entry : map.entrySet()) {  
            System.out.println(entry.getKey() + " : " + entry.getValue());  
        }  
        // 清空所有数据  
        map.clear();  
        // 查询总数  
        System.out.println(map.size());  
        // 释放资源  
        map.destroy();  
          
        /**=========== 高级对象存储 ============*/  
        DB4oMap<String, Map<String, String>> map2 = new DB4oMap<String, Map<String, String>>();  
        // 添加数据  
        Map<String, String> data1 = new HashMap<String, String>();  
        data1.put("data1.key1", "data1.value1");  
        data1.put("data1.key2", "data1.value2");  
        Map<String, String> data2 = new HashMap<String, String>();  
        data2.put("data2.key1", "data2.value1");  
        data2.put("data2.key2", "data2.value2");  
        Map<String, String> data3 = new HashMap<String, String>();  
        data3.put("data3.key1", "data3.value1");  
        Map<String, String> data4 = new HashMap<String, String>();  
        data4.put("data4.key1", "data4.value1");  
        data4.put("data4.key2", "data4.value1");  
        data4.put("data4.key3", "data4.value1");  
        map2.put("map1", data1);  
        map2.put("map2", data2);  
        map2.put("map3", data3);  
        map2.put("map3", data4);  
        // 检查数据  
        System.out.println(map2.containsKey("map1"));  
        System.out.println(map2.containsValue(data1));  
        // 获取单条数据  
        System.out.println(map2.get("map1"));  
        // 移除单条数据  
        System.out.println(map2.remove("map2"));  
        // 移除指定键值对  
        System.out.println(map2.remove("map1", data1));  
        // 遍历所有键  
        for (String key : map2.keySet()) {  
            System.out.println(key);  
        }  
        // 遍历所有的键值对  
        for (Map.Entry<String, Map<String, String>> entry : map2.entrySet()) {  
            System.out.println(entry.getKey() + " : " + entry.getValue());  
        }  
        // 遍历所有的数据  
        for (Map<String, String> datas : map2.getAll()) {  
            for (Map.Entry<String, String> entry : datas.entrySet()) {  
                System.out.println(entry.getKey() + ":" + entry.getValue());  
            }  
        }  
        // 清空所有数据  
        map2.clear();  
        // 查询总数  
        System.out.println(map2.size());  
        map2.destroy();  
    }  
  
}  


该例子实现感谢我的同事qun1988@gmail.com,如果大家有遇到什么问题,可以和他交流。


      svn地址:
http://code.google.com/p/ken-javaframeword/source/browse/trunk/JavaFramework2.5/src/com/shine/framework/DB4o/example/DB4oMapExample.java
      有兴趣可以把JavaFramework2.5这个svn下载下来
http://code.google.com/p/ken-javaframeword/source/browse/trunk/JavaFramework2.5

本站文章内容,部分来自于互联网,若侵犯了您的权益,请致邮件chuanghui423#sohu.com(请将#换为@)联系,我们会尽快核实后删除。
Copyright © 2006-2023 DBMNG.COM All Rights Reserved. Powered by DEVSOARTECH            豫ICP备11002312号-2

豫公网安备 41010502002439号