JAVA 中 Map的按顺序 PUT如何实现 ?
这有一些Key和Value,是按顺序获取的,假定顺序为1,2,3,4....我用:for(){value=获取value();key=获取key();MyMap.put(...
这有一些Key和Value,是按顺序获取的,假定顺序为 1,2,3,4....
我用:
for () {
value=获取value();
key=获取key();
MyMap.put(key,value);
}
MyMap 也是TreeMap
但里面的值存储并不按顺序,第一次put进1,第二次put进2(此时就乱了,2在1前面了) 然后Put进3,此时3在2和1之间,然后是4....
最后MyMap里的都是没顺序的组合;
这个Map是一个调查问卷,要按顺序显示在网页上的....
请问该怎么搞?
JSP+Struts2
---------------------
qingdaowpj大哥,我仍然不明白。
我的Map是
TreeMap<String,List<Map<String,String>>>
这个MLM使用Struts2.0的S标签去遍历,而不是Iterator 和Collection ,标签的遍历顺序就是MLM中的元素顺序
所以我是想对MLM中存储的数据进行重新排序,或者在PUT进元素的时候就是按顺序存储的;
实际上我是按顺序PUT的,但是它却不按顺序存储......
----------------------
当然不是啊,Key是String,值是List<map>啊!!
TreeMap<String,List<Map<String,String>>> !!!! 展开
我用:
for () {
value=获取value();
key=获取key();
MyMap.put(key,value);
}
MyMap 也是TreeMap
但里面的值存储并不按顺序,第一次put进1,第二次put进2(此时就乱了,2在1前面了) 然后Put进3,此时3在2和1之间,然后是4....
最后MyMap里的都是没顺序的组合;
这个Map是一个调查问卷,要按顺序显示在网页上的....
请问该怎么搞?
JSP+Struts2
---------------------
qingdaowpj大哥,我仍然不明白。
我的Map是
TreeMap<String,List<Map<String,String>>>
这个MLM使用Struts2.0的S标签去遍历,而不是Iterator 和Collection ,标签的遍历顺序就是MLM中的元素顺序
所以我是想对MLM中存储的数据进行重新排序,或者在PUT进元素的时候就是按顺序存储的;
实际上我是按顺序PUT的,但是它却不按顺序存储......
----------------------
当然不是啊,Key是String,值是List<map>啊!!
TreeMap<String,List<Map<String,String>>> !!!! 展开
3个回答
展开全部
public class TestMapSort {
/**
*@param args
*/
public static void main(String[] args) {
TreeMap map = new TreeMap();
for(int i=0; i<10; i++) {
int s = (int)(Math.random()*10);
System.out.println(s); //打印随机产生的数据无序
map.put(s,s); //测试随机put10个数字
}
Collection col = map.keySet(); //从map里取键集合,这里应该是排序的
Iterator it = col.iterator(); //遍历
while(it.hasNext()) {
int key =Integer.parseInt(it.next().toString()); //强制转换为int
System.out.println(key); //打印键
System.out.println(map.get(key)); //打印键对应的值
}
}
}
按照楼上的建议重新写了一个 我没有在Structs里面测,对立面的标签用起来感觉不习惯,我打印测试了 可以实现排序的功能
import java.util.*;
public class TreeMapTest {
@SuppressWarnings("unchecked")
public static Map.Entry[] getSortedTreeMap(TreeMap treemap) {
Set set = treemap.entrySet();
Map.Entry[] entries = (Map.Entry[]) set.toArray(new Map.Entry[set
.size()]);
Arrays.sort(entries, new Comparator() {
public int compare(Object arg0, Object arg1) {
Object key1 = ((Map.Entry) arg0).getKey();
Object key2 = ((Map.Entry) arg1).getKey();
return ((Comparable) key1).compareTo(key2);
}
});
return entries;
}
public static void main(String[] args) {
TreeMap tb = new TreeMap();
tb.put("11", "aad");
tb.put("ss", "aaaa");
tb.put("bb", "aa");
tb.put("aaa", "aad");
tb.put("fff", "aad");
Map.Entry[] set = getSortedTreeMap(tb);//调用上面方法排序
for (int i = 0; i < set.length; i++) {
System.out.println(set[i].getKey().toString());
System.out.println(set[i].getValue().toString());
}
}
}
/**
*@param args
*/
public static void main(String[] args) {
TreeMap map = new TreeMap();
for(int i=0; i<10; i++) {
int s = (int)(Math.random()*10);
System.out.println(s); //打印随机产生的数据无序
map.put(s,s); //测试随机put10个数字
}
Collection col = map.keySet(); //从map里取键集合,这里应该是排序的
Iterator it = col.iterator(); //遍历
while(it.hasNext()) {
int key =Integer.parseInt(it.next().toString()); //强制转换为int
System.out.println(key); //打印键
System.out.println(map.get(key)); //打印键对应的值
}
}
}
按照楼上的建议重新写了一个 我没有在Structs里面测,对立面的标签用起来感觉不习惯,我打印测试了 可以实现排序的功能
import java.util.*;
public class TreeMapTest {
@SuppressWarnings("unchecked")
public static Map.Entry[] getSortedTreeMap(TreeMap treemap) {
Set set = treemap.entrySet();
Map.Entry[] entries = (Map.Entry[]) set.toArray(new Map.Entry[set
.size()]);
Arrays.sort(entries, new Comparator() {
public int compare(Object arg0, Object arg1) {
Object key1 = ((Map.Entry) arg0).getKey();
Object key2 = ((Map.Entry) arg1).getKey();
return ((Comparable) key1).compareTo(key2);
}
});
return entries;
}
public static void main(String[] args) {
TreeMap tb = new TreeMap();
tb.put("11", "aad");
tb.put("ss", "aaaa");
tb.put("bb", "aa");
tb.put("aaa", "aad");
tb.put("fff", "aad");
Map.Entry[] set = getSortedTreeMap(tb);//调用上面方法排序
for (int i = 0; i < set.length; i++) {
System.out.println(set[i].getKey().toString());
System.out.println(set[i].getValue().toString());
}
}
}
展开全部
再多用一个List li = new List();
for () {
value=获取value();
key=获取key();
li.add(key);
MyMap.put(key,value);
}
在遍历显示的时候,这样。从list中按顺序取key,然后在map中取值也是顺序来了
for (int i = 0; i < li.length; i++) {
key = li[i];
value = Mymap.get(key);
}
for () {
value=获取value();
key=获取key();
li.add(key);
MyMap.put(key,value);
}
在遍历显示的时候,这样。从list中按顺序取key,然后在map中取值也是顺序来了
for (int i = 0; i < li.length; i++) {
key = li[i];
value = Mymap.get(key);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用comparator实现,可以去查查comparator的资料~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询