`
l万lin
  • 浏览: 28848 次
  • 性别: Icon_minigender_1
  • 来自: 江西
社区版块
存档分类
最新评论

ArrayList存放HashMap排序方法

阅读更多

 

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;
            }
        }
    }
}

 

 

 

 

0
2
分享到:
评论

相关推荐

    带有拼音首字母排序的listview.zip

    4. **数据结构与数据处理**: 为了实现拼音排序,可能需要对数据结构(如ArrayList或者HashMap)进行操作,可能包括遍历、比较、分组等步骤。 5. **用户交互**: ListView通常会响应用户的点击事件,可能包含点击条目...

    erfenfa.rar_DEMO

    选择排序是不稳定的排序方法,时间复杂度为O(n^2),在大数据量排序时效率较低,但其简单易懂的实现方式使其在教学中常被使用。 【二分法】,也称为折半查找,是一种在有序数组中查找特定元素的搜索算法。查找过程从...

    面试成功宝典

    List排序方法** - **内置排序**:`Collections.sort()`提供了两种排序方式,一种是基于内部比较器,适用于已实现`Comparable`接口的对象;另一种是基于外部比较器,需要提供`Comparator`接口的实现类。 - 内部...

    Java集合框架面试题

    - keySet():将 map 中所有的 key 存放到 set 中,因为 set 具备迭代器,可以通过迭代的方式取出所有的键,再根据 get() 方法再取得每一个键对应的值。 - entrySet() :把 key-value 作为一个整体的一对一的存放到...

    专题之java学习大总结.pdf

    - 选择排序则是每次从未排序序列中选出最小(或最大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续这个过程。 - 插入排序的工作方式像是玩扑克牌时整理牌的动作,每找到一个元素就将它插入到...

    Java 集合面试稳稳的.pdf

    面试中可能会问到的还有ArrayList与LinkedList的区别、HashMap的扩容机制、HashMap在JDK 1.7和JDK 1.8的内部结构变化、HashTable与HashMap的区别等。对于这些集合类的理解,能够体现出应聘者对Java集合框架的熟悉...

    2014年Java最全面试题以及答案.

    stack(栈)是用于存放局部变量和方法调用的栈帧。栈上的变量访问速度比堆上的变量快,但是栈的大小有限,且是自动管理的。 56. StaticNestedClass和InnerClass的不同? StaticNestedClass是静态内部类,它不需要...

    【2022最新版】Java基础面试题总结(70道题含答案解析)

    我们可以定义一个集合来存放整型、浮点型,字符串型数据,而这并不是最重要的,因为我们只要把底层存储设置了 Object 即可,添加的数据全部都可向上转型为 Object。 五、Collection 和 Collections 的区别 ...

    JAVA基础面试题

    Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。 在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。 Cookie和Session的作用、区别和各自的应用范围 ...

    马士兵J2SE第七章容器个人学习笔记.pdf

    3. 方法:`HashMap`没有`contains`方法,而是`containsKey`和`containsValue`,避免了误解。 4. 继承关系:`HashTable`继承自`Dictionary`类,`HashMap`实现`Map`接口。 5. 效率:由于线程安全,`HashTable`的效率...

    JAVA集合类应用[借鉴].pdf

    - API:两者都提供了基本的增删查改方法,但ArrayList的API可能更适合一些场景,例如快速随机访问。 - 同步处理:如果需要线程安全,Vector是更好的选择,否则ArrayList通常更高效。 - 数据增长性:两者都通过...

    Android ListView城市列表,按a-z分组字母索引排序

    接下来,为了实现分组,我们可以创建一个HashMap,其中键是字母(如"A", "B"等),值是一个ArrayList,存放对应首字母的城市。遍历排序后的城市列表,根据每个城市的首字母将其添加到对应的ArrayList中。这样,我们...

    2017数据结构java源码.rar

    图的常见表示方法有邻接矩阵和邻接表,Java中没有内置的图数据结构,但可以通过ArrayList或HashMap来实现。源码可能包含了图的遍历(深度优先和广度优先)和路径查找。 7. **哈希表**:哈希表提供了快速的查找、...

    7-java进阶-集合1

    为了确保元素的唯一性,`HashSet`在添加元素时,会通过`hashCode()`计算哈希值,找到存储位置,如果位置为空则直接存放,如果已有元素,则调用`equals()`方法判断内容是否一致,一致则不存放,不一致则通过链表处理...

    杭州公司笔试题目.doc

    杭州公司笔试题目.doc 一、离线查询去除重复项 dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY) 是 Hibernate 框架中用于...2. Hashtable 中的方法是同步的,而 HashMap 中的方法在缺省情况下是非同步的。

    java面试题,肯定好,不好怪我!

    #### 三、ArrayList与Vector、HashMap与Hashtable的区别 1. **ArrayList与Vector**: - **同步性**:`Vector`是线程安全的,所有方法都是同步的;而`ArrayList`不是线程安全的。 - **数据增长**:当需要增加容量时...

    java集合分类总结.doc

    Collections类主要提供了在collection上进行操作的方法,如排序、查找等。 学习Java集合需要掌握以下几个方面: 1. 怎样得到(选择)集合对象 2. 怎样添加元素 3. 怎样删除元素 4. 怎样循环遍历每一个元素 在实际...

    浅谈Java中的Set、List、Map的区别.docx

    Java 集合只能存放引用类型的数据,不能存放基本数据类型。 Collection 接口是最基本的集合接口,声明了适用于 Java 集合(只包括 Set 和 List)的通用方法。Set 和 List 都继承了 Collection 接口。 Collection ...

    集合总结.docx

    4. **建立公共溢出区**:为哈希表设置一个额外的区域,当哈希冲突发生时,将冲突的元素存放在这个公共区域,通常这种方法在实际应用中较少使用。 了解这些知识点有助于我们更好地设计和优化程序,选择合适的集合...

Global site tag (gtag.js) - Google Analytics