map 进行排序啊。

qq_31856619 2018-05-17 06:00:08
public class Filelists {
public static void main(String[] args) {
List<Map<String,String>> list=new ArrayList<>();
Map<String,String> item=new HashMap<>();
item.put("xh", "1");
list.add(item);
item=new HashMap<>();
item.put("xh", "2");
list.add(item);
item=new HashMap<>();
item.put("xh", "3");
list.add(item);
item=new HashMap<>();
item.put("xh", "4");
list.add(item);
item=new HashMap<>();
item.put("xh", "1.1");
list.add(item);
item=new HashMap<>();
item.put("xh", "1.6");
list.add(item);
item=new HashMap<>();
item.put("xh", "1.2");
list.add(item);

Map<String,String>[] data=list.toArray(new HashMap[list.size()]);


for (Map<String, String> m : data)
{
for (String k : m.keySet())
{
System.out.println(k + " : " + m.get(k));
}
}


}
...全文
1491 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
马修马 2018-05-25
  • 打赏
  • 举报
回复
可以使用LinkedhashMap 放入顺序就可以为输出顺序
  • 打赏
  • 举报
回复
引用 4 楼 FrankWeizq 的回复:
集合自带的排序

Collections.sort(list, new Comparator<Map<String,String>>() {
			@Override
			public int compare(Map<String, String> o1, Map<String, String> o2) {
				double  d1 = Double.valueOf(o1.get("xh").toString());
	            double  d2 = Double.valueOf(o2.get("xh").toString());
	            return (int)((d1-d2)*100);
			}
		});
    	System.out.println("list " + list);
正解,可以结贴了
qq_31856619 2018-05-21
  • 打赏
  • 举报
回复
引用 7 楼 Ragin 的回复:

public static void main(String[] args) throws Exception {
        List<Map<String,String>> list=new ArrayList<>();
        Map<String,String> item=new HashMap<>();
        item.put("xh", "1");
        list.add(item);
        item=new HashMap<>();
        item.put("xh", "2");
        list.add(item);
        item=new HashMap<>();
        item.put("xh", "3");
        list.add(item);
        item=new HashMap<>();
        item.put("xh", "4");
        list.add(item);
        item=new HashMap<>();
        item.put("xh", "1.1");
        list.add(item);
        item=new HashMap<>();
        item.put("xh", "1.6");
        list.add(item);
        item=new HashMap<>();
        item.put("xh", "1.2");
        list.add(item);
        list.stream().sorted((m1, m2) -> new BigDecimal(m1.get("xh")).compareTo(new BigDecimal(m2.get("xh")))).forEach(System.out::println);
    }
添加1.11.15.15后就出现错误了
Braska 2018-05-21
  • 打赏
  • 举报
回复
引用 9 楼 qq_31856619 的回复:
这么多点。。。value不是数值???那你的排序规则的什么?
practiceing 2018-05-19
  • 打赏
  • 举报
回复
4楼正解
Braska 2018-05-18
  • 打赏
  • 举报
回复

public static void main(String[] args) throws Exception {
        List<Map<String,String>> list=new ArrayList<>();
        Map<String,String> item=new HashMap<>();
        item.put("xh", "1");
        list.add(item);
        item=new HashMap<>();
        item.put("xh", "2");
        list.add(item);
        item=new HashMap<>();
        item.put("xh", "3");
        list.add(item);
        item=new HashMap<>();
        item.put("xh", "4");
        list.add(item);
        item=new HashMap<>();
        item.put("xh", "1.1");
        list.add(item);
        item=new HashMap<>();
        item.put("xh", "1.6");
        list.add(item);
        item=new HashMap<>();
        item.put("xh", "1.2");
        list.add(item);
        list.stream().sorted((m1, m2) -> new BigDecimal(m1.get("xh")).compareTo(new BigDecimal(m2.get("xh")))).forEach(System.out::println);
    }
qq_31856619 2018-05-18
  • 打赏
  • 举报
回复
引用 4 楼 FrankWeizq 的回复:
集合自带的排序

Collections.sort(list, new Comparator<Map<String,String>>() {
			@Override
			public int compare(Map<String, String> o1, Map<String, String> o2) {
				double  d1 = Double.valueOf(o1.get("xh").toString());
	            double  d2 = Double.valueOf(o2.get("xh").toString());
	            return (int)((d1-d2)*100);
			}
		});
    	System.out.println("list " + list);
你写的只能支持两位数,能扩张到无限位数吗?
qq_31856619 2018-05-17
  • 打赏
  • 举报
回复
引用 4 楼 FrankWeizq 的回复:
集合自带的排序

Collections.sort(list, new Comparator<Map<String,String>>() {
			@Override
			public int compare(Map<String, String> o1, Map<String, String> o2) {
				double  d1 = Double.valueOf(o1.get("xh").toString());
	            double  d2 = Double.valueOf(o2.get("xh").toString());
	            return (int)((d1-d2)*100);
			}
		});
    	System.out.println("list " + list);
能详细解释一下吗
FrankWeizq 2018-05-17
  • 打赏
  • 举报
回复
集合自带的排序

Collections.sort(list, new Comparator<Map<String,String>>() {
			@Override
			public int compare(Map<String, String> o1, Map<String, String> o2) {
				double  d1 = Double.valueOf(o1.get("xh").toString());
	            double  d2 = Double.valueOf(o2.get("xh").toString());
	            return (int)((d1-d2)*100);
			}
		});
    	System.out.println("list " + list);
沁海棠 2018-05-17
  • 打赏
  • 举报
回复
你是要对list中的map进行排序,还是对list中的map中的数据进行排序, hashmap存数据是无序的,list存数据,顺序是放入的顺序, 对list排序看下collections中的方法,map排序用treemap就行
qq_31856619 2018-05-17
  • 打赏
  • 举报
回复
引用 1 楼 maradona1984 的回复:
HashMap 换成TreeMap
怎么循环输出,并不改代码
maradona1984 2018-05-17
  • 打赏
  • 举报
回复
HashMap 换成TreeMap

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧