「JavaMap实现」java 的map
今天给各位分享JavaMap实现的知识,其中也会对java 的map进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java 中 Map 内部是怎么实现的
- 2、java中如何在map中实现一对多的关系?
- 3、java中map有哪几种实现方式,并且比较异同
- 4、java怎么实现map 缓存技术
- 5、java中如何使用map存取数据
- 6、javamap的用法
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实现的信息别忘了在本站进行查找喔。
发布于:2022-11-23,除非注明,否则均为
原创文章,转载请注明出处。