map 分页

高手们 怎么对map里的值进行分页?

[code="java"]

set = cardMap.entrySet(); List list = new ArrayList(); //保存set集合到list里,之后就直接操作list就好了 list.addAll(set); //下面就直接写了,访问list int totalPage=0; //总页数 int count = cardMap.size(); //总行数 if(count%5

邮箱:
')">
分机:

[/code]

能不能描述的详细一点?

看你想要什么效果了,具体说说你想要的效果
hashmap里面是以hashcode排列的,你要想按你的顺序分页,感觉用map就没大意义了,如果是想模拟分页的效果用还行。

你这是把数据都放在内存中的Map里?

来个内存分页的?

lz看这样是不是可行:

初始化时,用一些map存储那1000条记录(如1页10条,那就一个map存10条)

然后把这些map存在list中

那么list的索引号就是map的页数了啊

你的记录怎么会放到map里,应该是放在list里吧,map是key-value,你的key是干什么用的

如果是list,那很好定位数据的位置,用E get(int index)返回列表中指定位置的元素。

刚才看错了

原来lz的map中的每一个元素 都只有这么一点内容

那么直接用List好了啊

lz可以将每一个元素的key和values封装成一个对象

其实实际上你分页操作的对象是Map.Entry
也就是Set集合cardMap.entrySet()中的数据,你应该把set转换成list,那就很方便了,

还有,为了避免每次都调用cardMap.entrySet()得到数据集合,你应该提供一个api来得到cardMap.entrySet(),而且只调用一次,以后就一直用就行了

针对list的分页就很简单了

[color=indigo]可以分页倒是可以分页,举个简单的方法,你可以写个类继承hashmap啊,然后写个方法不就好了,但是这样做其实没有大意义,每次取的数据都是从hashmap里去,都是通过hashcode和id去找,虽然能做出效果,但是性能问题值得考究。
但是正如楼上说的那样,正常的分页思路应该是,你想取前10条,就查询到10就可以了,如果想去10-20条就直接取10-20,这样不用像从map里,每次都得按hash算法算下,看里面是否有这个元素,然后再取了[/color]

[code="java"]

set = cardMap.entrySet(); List list = new ArrayList(); //保存set集合到list里,之后就直接操作list就好了 list.addAll(set); //下面就直接写了,访问list int totalPage=0; //总页数 int count = cardMap.size(); //总行数 if(count%5

邮箱:
')">
分机:

[/code]

不管你的value是什么,list里存放的就是Map.Entry,

这与遍历map中的Map.Entry是一样的效果,

list遍历数据是最快的,所以就解决了性能问题和遍历问题

我已经给你完整实现了这个页面,

和你之前的唯一不同的就是改成list而已,不就这样嘛