1、首先初始化一个map,然后按照代码依次打印Map的数据。
3、将代码修改为LinkedHashMap,遍历LinkedHashMap。
4、打印结果为按Map插入顺序打印,可见LinkedHashMap中的数据是有序的,排序方式按照插入顺序。
5、最后将代码修改为new TreeMap,然后遍历TreeMap。
6、打印结果为自然顺序,即按字符串中的字母和数字的大小来排序,可见treeMap中的数据是有序的,按key的大小来排序。
这个问题,看你的代码怎么规范。将数据库中取出的值存如map的value,再把value循环存入list。如果map的key值没有逻辑要求,可以将key字符串设置成迭代参数,如"0","1","2"等,循环如下:
for(int i=0;i<length;i++){
String key=""+i;
listadd(mapget(key));
}
Java中可以使用队列来保存数据,当使用的时候,加上锁,防止其他进程访问,当不用的时候保存到数据库里面,示例如下:
package comhenry;import javautilHashMap;
import javautilMap;
import javautilRandom;
import javautilconcurrentlocksReadWriteLock;
import javautilconcurrentlocksReentrantReadWriteLock;
public class CacheDataTest {
static Map<Integer,Object> dataMap=new HashMap<Integer,Object>();
static ReadWriteLock lock=new ReentrantReadWriteLock();//创建读写锁的实例
static Object getData(Integer key){
lockreadLock()lock();//读取前先上锁
Object val=null;
try{
val=dataMapget(key);
if(val == null){
// Must release read lock before acquiring write lock
lockreadLock()unlock();
lockwriteLock()lock();
try{
//可能已经由其他线程写入数据
if(val==null){
//dataMapput(key, "");//query from db
val=queryDataFromDB(key);
}
}finally{
//Downgrade by acquiring read lock before releasing write lock
lockreadLock()lock();
// Unlock write, still hold read
lockwriteLock()unlock();
}
}
}finally{
lockreadLock()unlock();//最后一定不要忘记释放锁
}
Systemoutprintln("get data key="+key+">val="+val);
return val;
}
static Object queryDataFromDB(Integer key){
Object val=new Random()nextInt(1000);
dataMapput(key, val);
Systemoutprintln("write into data key="+key+">val="+val);
return val;
}
public static void main(String[] args) {
for(int i=0;i<10;i++){
new Thread(new Runnable(){public void run() {
getData(new Random()nextInt(5));
}})start();
}
}
}
以上就是关于怎么把数据库查询的结果保存到map中全部的内容,包括:怎么把数据库查询的结果保存到map中、从数据库中取出的值,循环放入map中,再把map放中list中,问怎样取出map中的key值、java怎样将数据保存到缓存中,之后再保存等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)