`

坑爹的集合

 
阅读更多
本节实例介绍对Map中的记录根据键进行排序,Map对象的键是Integer类型,排序结果可以是升序也可以是降序。
关键技术剖析:
l  只有TreeMap能够把保持的记录根据键排序,因此,可以把其他Map转换成TreeMap,转换的方法是把Map对象当做参数构造TreeMap。
l  TreeMap默认用升序排序,可以指定排序用的比较器。比较实现Comparator接口。
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
 
public class SortMap1 {
   // 输出map
   private static void output(Map map) {
      // 第一种方法用 map.entrySet()遍历
      Iterator it = map.entrySet().iterator();
      while (it.hasNext()) {
         Map.Entry<Integer, String> s = (Entry<Integer, String>) it.next();
         int key = s.getKey();
         String value = s.getValue();
         // System.out.println("map的键是:"+key+",值是:"+value);
      }
 
      // 第二种方法用map.keySet()遍历
      it = map.keySet().iterator();
      while (it.hasNext()) {
         int key = (Integer) it.next();
         String value = (String) map.get(key);
         System.out.println("map的键是:" + key + ",值是:" + value);
 
      }
 
   }
 
   public static void main(String[] args) {
      Map map = new HashMap();
      map.put(new Integer(5), "aaa");
      map.put(new Integer(8), "bbb");
      map.put(new Integer(4), "ccc");
      map.put(new Integer(7), "ddd");
      map.put(new Integer(3), "eee");
      map.put(new Integer(1), "fff");
      System.out.println("初始化后的map:");
      output(map);
  
      // 借助TreeMap的排序功能给mayMap排序
      Map treeMap = new TreeMap(map);
      System.out.println("排序后的map:");
      output(treeMap);
  
      // 用自定义的比较器排序
      TreeMap newTreeMap = new TreeMap(new MyComparator());
      newTreeMap.putAll(map);
      System.out.println("用自定义的比较器排序后的map:");
      output(newTreeMap);
   }
}
 //比较器
class MyComparator implements Comparator {
 
   @Override
   public int compare(Object o1, Object o2) {
      int i1 = (Integer) o1;
      int i2 = (Integer) o2;
      if (i1 > i2) {
         return -1;
      }
      if (i1 < i2) {
         return 1;
      }
      return 0;
   }
}



注意:c1 > c2,return -1是降序,return 1是升序
@Test
	public void compareTest() {
		List<Integer> list = new ArrayList<Integer>();
		list.add(3);
		list.add(8);
		list.add(2);
		list.add(1);
		list.add(4);
		list.add(0);

		Collections.sort(list, new Comparator<Integer>() {

			@Override
			public int compare(Integer o1, Integer o2) {
				if (o1 > o2) {
					return -1;
				}
				else {
					return 1;
				}
			}
		});
		System.out.println(list.toString());
	}
[8, 4, 3, 2, 1, 0]
分享到:
评论

相关推荐

    易语言编写的坑爹记事本

    综上所述,《易语言编写的坑爹记事本》虽然名字有些戏谑,但其背后却集合了易语言的一些实用模块,如多皮肤支持、窗口管理、安全保护等。尽管可能在某些方面存在不足,但作为一个学习项目或初级用户的工具,它依然有...

    c语言坑爹大冒险.zip

    这个"**c语言坑爹大冒险.zip**"文件很可能是一个集合,包含了各种C语言学习过程中可能会遇到的难点、陷阱和常见错误,旨在帮助学习者避免这些困扰,提升编程技能。 C语言的学习首先从基础语法开始,包括变量声明、...

    c语言坑爹大冒险.rar

    综合来看,这个压缩包中的"C语言坑爹大冒险"很可能是一个集合,包含了各种C语言编程的实战示例,旨在帮助学生或开发者在遇到困难时找到解决方案,或者避免常见的编程陷阱。通过对这些源码的分析和学习,你可以提升...

    lol坑爹语录.doc

    【标题】:“lol坑爹语录.doc”实际上指的是《英雄联盟》游戏中的各种经典台词和感人语录,这些语录体现了游戏中角色的情感和背景故事。 【描述】:文档中的描述并未给出具体信息,但我们可以推测这是一份收集了...

    c语言坑爹大冒(C语言课程设计).rar

    数组是C语言中存储相同类型元素集合的方式,而字符串是字符数组的一种特殊形式。理解数组的动态和静态分配,以及如何处理字符串(如使用strcpy、strlen等库函数)将有助于解决项目中的问题。 4. **内存管理** ...

    电子商务设计师考试真题答案大集合05-10共10套真题试卷

    电子商务设计师考试真题答案大集合05-10共10套真题试卷,其中答案详细,肯定物有所值,不会坑爹的。。

    58例最新C语言项目源码实战案例集合(适合初学者学习C开源项目代码).zip

    c语言坑爹大冒险 c语言坦克游戏源代码 c语言大丰收游戏源码 c语言奔跑的火柴人游戏源码 c语言实现的象棋源码 c语言实现的超级玛丽游戏源码 c语言情人节的红玫瑰 c语言打字母游戏源码 c语言打字游戏代码 c语言扔香蕉...

    老齐的python

    第零部分 独上高楼,望尽天涯路 i. 唠叨一些关于python的事情 ii. 开始本栏目的原因 2. 第一部分 积小流,至江海 ... 坑爹的字符编码 xxix. 做一个小游戏 xxx. 不要红头文件(1): open, write, close

    c语言矿井逃生.zip

    4. **数组与字符串**:数组是一系列相同类型元素的集合,而字符串是字符数组的特殊形式。在C语言中,字符串通常以空字符'\0'结束。 5. **结构体与联合**:结构体允许将不同类型的数据组合在一起,形成复杂的数据...

    零基础学Python

    ##### 坑爹的字符编码 - **编码基础知识**:ASCII、UTF-8、GB2312等常见编码。 - **编码转换**:如何解决文本文件打开时可能出现的编码错误。 #### 第二部分:穷千里目,上一层楼 ##### 正规地说一句话 - **字符...

    Oracle Concepts 10g R2 pdf 中英文对照版

    - **数据段**:数据段是由一系列连续或非连续的数据块组成的集合,用于存储同一类型的数据库对象。 #### 3. 表空间、数据文件和控制文件 - **表空间**:表空间是逻辑上的存储单元,用于组织和管理数据库中的数据和...

Global site tag (gtag.js) - Google Analytics