「JavaMap实现」java 的map

博主:adminadmin 2022-11-23 03:35:08 76

今天给各位分享JavaMap实现的知识,其中也会对java 的map进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java 中 Map 内部是怎么实现的

Map只是一个接口,只定义了具体的方法,没有去实现任何功能的

Map的源码如下:

public abstract interface MapK, V

{

public abstract int size();

public abstract boolean isEmpty();

public abstract boolean containsKey(Object paramObject);

public abstract boolean containsValue(Object paramObject);

public abstract V get(Object paramObject);

public abstract V put(K paramK, V paramV);

public abstract V remove(Object paramObject);

public abstract void putAll(Map? extends K, ? extends V paramMap);

public abstract void clear();

public abstract SetK keySet();

public abstract CollectionV values();

public abstract SetEntryK, V entrySet();

public abstract boolean equals(Object paramObject);

public abstract int hashCode();

public static abstract interface EntryK, V

{

public abstract K getKey();

public abstract V getValue();

public abstract V setValue(V paramV);

public abstract boolean equals(Object paramObject);

public abstract int hashCode();

}

}

java中如何在map中实现一对多的关系?

假设这样定义:

Map coll=new HashMap();

coll.put(1,"a");

coll.put(1,"b");

比如说1代表学校,a和b分别代表学院,即一个学校可对应多个学院。

1、可以使用MapInteger, List格式来达到一对多的关系

2、key值可以为一个整型数,作为一个类似ID主键来使用,value值可以用List集合来保存多条数据。

3、这样就达到了一个key,对应多条记录。

java中map有哪几种实现方式,并且比较异同

Map是一种把键对象和值对象进行关联的容器,而一个值对象又可以是一个Map,依次类推,这样就可形成一个多级映射。对于键对象来说,像Set 一样,一个Map容器中的键对象不允许重复,这是为了保持查找结果的一致性;如果有两个键对象一样,那你想得到那个键对象所对应的值对象时就有问题了,可 能你得到的并不是你想的那个值对象,结果会造成混乱,所以键的唯一性很重要,也是符合集合的性质的。当然在使用过程中,某个键所对应的值对象可能会发生变 化,这时会按照最后一次修改的值对象与键对应。对于值对象则没有唯一性的要求。你可以将任意多个键都映射到一个值对象上,这不会发生任何问题(不过对你的 使用却可能会造成不便,你不知道你得到的到底是那一个键所对应的值对象)。

Map有两种比较常用的实现:HashMap和TreeMap,WeakMap。HashMap 也用到了哈希码的算法,以便快速查找一个键,TreeMap则是对键按序存放,因此它便有一些扩展的方法,比如firstKey(),lastKey() 等,你还可以从TreeMap中指定一个范围以取得其子Map。键和值的关联很简单,用pub(Object key,Object value)方法即可将一个键与一个值对象相关联。用get(Object key)可得到与此key对象所对应的值对象,WeakMap这个用于内存自动释放的。

java怎么实现map 缓存技术

/**

 * 缓存池

 * @author xiaoquan

 * @create 2015年3月13日 上午10:32:13

 * @see

 */

public class CachePool {

    private static CachePool instance;//缓存池唯一实例

    private static MapString,Object cacheItems;//缓存Map

     

    private CachePool(){

        cacheItems = new HashMapString,Object();

    }

    /**

     * 得到唯一实例

     * @return

     */

    public synchronized static CachePool getInstance(){

        if(instance == null){

            instance = new CachePool();

        }

        return instance;

    }

    /**

     * 清除所有Item缓存

     */

    public synchronized void clearAllItems(){

        cacheItems.clear();

    }

    /**

     * 获取缓存实体

     * @param name

     * @return

     */

    public synchronized Object getCacheItem(String name){

        if(!cacheItems.containsKey(name)){

            return null;

        }

        CacheItem cacheItem = (CacheItem) cacheItems.get(name);

        if(cacheItem.isExpired()){

            return null;

        }

        return cacheItem.getEntity();

    }

    /**

     * 存放缓存信息

     * @param name

     * @param obj

     * @param expires

     */

    public synchronized void putCacheItem(String name,Object obj,long expires){

        if(!cacheItems.containsKey(name)){

            cacheItems.put(name, new CacheItem(obj, expires));

        }

        CacheItem cacheItem = (CacheItem) cacheItems.get(name);

        cacheItem.setCreateTime(new Date());

        cacheItem.setEntity(obj);

        cacheItem.setExpireTime(expires);

    }

    public synchronized void putCacheItem(String name,Object obj){

        putCacheItem(name,obj,-1);

    }

     

    /**

     * 移除缓存数据

     * @param name

     */

    public synchronized void removeCacheItem(String name){

        if(!cacheItems.containsKey(name)){

            return;

        }

        cacheItems.remove(name);

    }

     

    /**

     * 获取缓存数据的数量

     * @return

     */

    public int getSize(){

        return cacheItems.size();

    }

}

public class CacheItem {

    private Date createTime = new Date();//创建缓存的时间

    private long expireTime = 1;//缓存期满的时间

    private Object entity;//缓存的实体

     

    public CacheItem(Object obj,long expires){

        this.entity = obj;

        this.expireTime = expires;

    }

     

    public boolean isExpired(){

        return (expireTime != -1  new Date().getTime()-createTime.getTime()  expireTime);

    }

        /**

         * 省略getter、setter方法

         */

}

java中如何使用map存取数据

java中使用map存取数据的方法如下:

1、需要指定其中的K,V;k=keyv=value。

2、指定其中K、V的类型。

3、接下来往map中添加数据。

4、需要注意的是,如果map中已经存在的key,后面添加的会覆盖掉当前值。

接下来对map进行遍历输出。可以看到其中a的值已经被覆盖,此时就已经使用map存储好数据了。

javamap的用法

javamap的用法如下;

1、void clear():删除Map中所有键值对。

2、boolean containsKey(Object key):查询Map中是否包含指定key,如果包含则返回true。

3、boolean containsValue(Object value):查询Map中是否包含指定value,如果包含则返回true。

4、Set entrySet():返回Map中所包含的键值对所组成的Set集合,每个集合元素都是Map.Entry对象(Entry是Map的内部类)。

5、Object get(Object key):返回指定key所对应的value,如Map中不包含key则返回null。

6、boolean isEmpty():查询Map是否为空,如果空则返回true。

7、Set keySet():返回该Map中所有key所组成的set集合。

8、Object put(Object key,Object value):添加一个键值对,如果已有一个相同的key值则新的键值对覆盖旧的键值对。

9、void putAll(Map m):将指定Map中的键值对复制到Map中。

10、Object remove(Object key):删除指定key所对应的键值对,返回可以所关联的value,如果key不存在,返回null。

11、int size():返回该Map里的键值对的个数。

12、Collection values():返回该Map里所有value组成的Collection。

Map中包含一个内部类:Entry。该类封装了一个键值对,它包含了三个方法:

1、Object getKey():返回该Entry里包含的key值。

2、Object getValeu():返回该Entry里包含的value值。

3、Object setValue(V value):设置该Entry里包含的value值,并返回新设置的value值。

JavaMap实现的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java 的map、JavaMap实现的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-23,除非注明,否则均为首码项目网原创文章,转载请注明出处。