Index.java
package com.test.coll; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.Random; public class Index { public static void main(String[] args) { System.out.println("---------排序前---------"); ArrayList<HashMap<String, String>> al = Index.getRondomData(); for (HashMap<String, String> hm : al) { System.out.println(hm.get("key") + ":" + hm.get("value")); } System.out.println("---------排序后---------"); Collections.sort(al, new MySort(false, true, "key")); for (HashMap<String, String> hm : al) { System.out.println(hm.get("key") + ":" + hm.get("value")); } } public static ArrayList<HashMap<String, String>> getRondomData() { ArrayList<HashMap<String, String>> al = new ArrayList<HashMap<String, String>>(); for (int i = 0; i < 10; i++) { HashMap<String, String> hm = new HashMap<String, String>(); hm.put("key", (new Random()).nextInt(100) + ""); hm.put("value", (new Random()).nextInt(100) + ""); al.add(hm); } return al; } }
MySort.java
package com.test.coll; import java.util.Comparator; import java.util.HashMap; public class MySort implements Comparator<HashMap<String, String>> { private boolean isAsc; // 是否为升序,true:升序,false:降序 private boolean isNum; // 排序value是否为数值型 private String key; // 根据哪个key排序 public MySort(boolean isAsc, boolean isNum, String key) { this.isAsc = isAsc; this.isNum = isNum; this.key = key; } @Override public int compare(HashMap<String, String> hashMap1, HashMap<String, String> hashMap2) { String v1 = hashMap1.get(this.key); String v2 = hashMap2.get(this.key); if (!isNum) { return isAsc ? (v1.compareTo(v2)) : (v2.compareTo(v1)); } else { if (Double.parseDouble(v1) > Double.parseDouble(v2)) { return isAsc ? 1 : -1; }else if(Double.parseDouble(v1) < Double.parseDouble(v2)) { return isAsc ? -1 : 1; }else { return 0; } } } }
相关推荐
4. **数据结构与数据处理**: 为了实现拼音排序,可能需要对数据结构(如ArrayList或者HashMap)进行操作,可能包括遍历、比较、分组等步骤。 5. **用户交互**: ListView通常会响应用户的点击事件,可能包含点击条目...
选择排序是不稳定的排序方法,时间复杂度为O(n^2),在大数据量排序时效率较低,但其简单易懂的实现方式使其在教学中常被使用。 【二分法】,也称为折半查找,是一种在有序数组中查找特定元素的搜索算法。查找过程从...
List排序方法** - **内置排序**:`Collections.sort()`提供了两种排序方式,一种是基于内部比较器,适用于已实现`Comparable`接口的对象;另一种是基于外部比较器,需要提供`Comparator`接口的实现类。 - 内部...
- keySet():将 map 中所有的 key 存放到 set 中,因为 set 具备迭代器,可以通过迭代的方式取出所有的键,再根据 get() 方法再取得每一个键对应的值。 - entrySet() :把 key-value 作为一个整体的一对一的存放到...
- 选择排序则是每次从未排序序列中选出最小(或最大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续这个过程。 - 插入排序的工作方式像是玩扑克牌时整理牌的动作,每找到一个元素就将它插入到...
面试中可能会问到的还有ArrayList与LinkedList的区别、HashMap的扩容机制、HashMap在JDK 1.7和JDK 1.8的内部结构变化、HashTable与HashMap的区别等。对于这些集合类的理解,能够体现出应聘者对Java集合框架的熟悉...
stack(栈)是用于存放局部变量和方法调用的栈帧。栈上的变量访问速度比堆上的变量快,但是栈的大小有限,且是自动管理的。 56. StaticNestedClass和InnerClass的不同? StaticNestedClass是静态内部类,它不需要...
我们可以定义一个集合来存放整型、浮点型,字符串型数据,而这并不是最重要的,因为我们只要把底层存储设置了 Object 即可,添加的数据全部都可向上转型为 Object。 五、Collection 和 Collections 的区别 ...
Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。 在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。 Cookie和Session的作用、区别和各自的应用范围 ...
3. 方法:`HashMap`没有`contains`方法,而是`containsKey`和`containsValue`,避免了误解。 4. 继承关系:`HashTable`继承自`Dictionary`类,`HashMap`实现`Map`接口。 5. 效率:由于线程安全,`HashTable`的效率...
- API:两者都提供了基本的增删查改方法,但ArrayList的API可能更适合一些场景,例如快速随机访问。 - 同步处理:如果需要线程安全,Vector是更好的选择,否则ArrayList通常更高效。 - 数据增长性:两者都通过...
接下来,为了实现分组,我们可以创建一个HashMap,其中键是字母(如"A", "B"等),值是一个ArrayList,存放对应首字母的城市。遍历排序后的城市列表,根据每个城市的首字母将其添加到对应的ArrayList中。这样,我们...
图的常见表示方法有邻接矩阵和邻接表,Java中没有内置的图数据结构,但可以通过ArrayList或HashMap来实现。源码可能包含了图的遍历(深度优先和广度优先)和路径查找。 7. **哈希表**:哈希表提供了快速的查找、...
为了确保元素的唯一性,`HashSet`在添加元素时,会通过`hashCode()`计算哈希值,找到存储位置,如果位置为空则直接存放,如果已有元素,则调用`equals()`方法判断内容是否一致,一致则不存放,不一致则通过链表处理...
杭州公司笔试题目.doc 一、离线查询去除重复项 dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY) 是 Hibernate 框架中用于...2. Hashtable 中的方法是同步的,而 HashMap 中的方法在缺省情况下是非同步的。
#### 三、ArrayList与Vector、HashMap与Hashtable的区别 1. **ArrayList与Vector**: - **同步性**:`Vector`是线程安全的,所有方法都是同步的;而`ArrayList`不是线程安全的。 - **数据增长**:当需要增加容量时...
Collections类主要提供了在collection上进行操作的方法,如排序、查找等。 学习Java集合需要掌握以下几个方面: 1. 怎样得到(选择)集合对象 2. 怎样添加元素 3. 怎样删除元素 4. 怎样循环遍历每一个元素 在实际...
Java 集合只能存放引用类型的数据,不能存放基本数据类型。 Collection 接口是最基本的集合接口,声明了适用于 Java 集合(只包括 Set 和 List)的通用方法。Set 和 List 都继承了 Collection 接口。 Collection ...
4. **建立公共溢出区**:为哈希表设置一个额外的区域,当哈希冲突发生时,将冲突的元素存放在这个公共区域,通常这种方法在实际应用中较少使用。 了解这些知识点有助于我们更好地设计和优化程序,选择合适的集合...