`
孟雪雪
  • 浏览: 51329 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Java Arraylist 如何使用 Comparator排序

    博客分类:
  • JAVA
阅读更多
Java Arraylist 如何使用 Comparator排序import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class Sort implements Comparator<String> {
private final static int UP = 1;

private final static int DOWM = -1;

private int state;

public Sort(int state) {
this.state = state;
}

public Sort() {

}

public int compare(String o1, String o2) {
if (state == Sort.DOWM) {
return sortDown(o1, o2);
}
return sortUp(o1, o2);
}

private int sortUp(String o1, String o2) {
if (o1.compareTo(o2) < 0) {
return -1;
} else if (o1.compareTo(o2) > 0) {
return 1;
} else {
return 0;
}
}

private int sortDown(String o1, String o2) {
if (o1.compareTo(o2) > 0) {
return -1;
} else if (o1.compareTo(o2) < 0) {
return 1;
} else {
return 0;
}
}

public static void main(String[] args) {
ArrayList<String> array = new ArrayList<String>();
array.add("000001");
array.add("000003");
array.add("000005");
array.add("000004");
array.add("000002");
Collections.sort(array, new Sort(Sort.DOWM));

for (String str : array) {
System.out.println(str);
}
}
}



==============

功能:ArrayList中放置他是HashMap对象,这时要对其中的所有对象做排序。

一、首先编写排序器

DataComparator.java

import Comparable.test1.Person;
import java.util.Comparator;
import java.util.HashMap;
import java.text.Collator;
import java.text.CollationKey;

public class DataComparator
     implements Comparator {
   Collator collator = Collator.getInstance(); //调入这个是解决中文排序问题
   public int compare(Object obj1, Object obj2) {
     HashMap map1 = (HashMap) obj1;
     HashMap map2 = (HashMap) obj2;
     String name1 = (String) map1.get("Name");
     String name2 = (String) map2.get("Name");
     CollationKey key1 = collator.getCollationKey(name1.toLowerCase());
     CollationKey key2 = collator.getCollationKey(name2.toLowerCase());
     return key1.compareTo(key2);
   }
}

二、测试

ArrayListMapSortTest.java

import java.util.Collections;
import Comparable.ArrayListMapSort.DataComparator;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Iterator;
import java.util.Date;
import java.io.File;

public class ArrayListMapSortTest {

   //列出文件夹下的文件及文件夹,不包括子文件夹中的文件和文件夹
   public ArrayList listFoldersAndFiles(String path) {
     File file = new File(path);
     File[] list = file.listFiles();
     ArrayList al = new ArrayList();
     for (int i = 0; i < list.length; i++) {
       //if (list[i].isDirectory())
       //     listFolder(list[i].getPath());
       HashMap hm = new HashMap();
       hm.put("Name", list[i].getName());
       hm.put("Path", list[i].getPath());
       hm.put("AbsolutePath", list[i].getAbsolutePath());
       hm.put("Parent", list[i].getParent());
//           hm.put("isAbsolute", list[i].isAbsolute());
//           hm.put("isDirectory", list[i].isDirectory());
//           hm.put("isFile", list[i].isFile());
//           hm.put("isHidden", list[i].isHidden());
       hm.put("lastModified",
              new Date(list[i].lastModified()).toLocaleString());
       al.add(hm);
       //System.out.println(list[i].getName()+"    是文件夹:"+list[i].isDirectory());
     }
     return al;
   }

   public static void main(String[] args) {
     ArrayListMapSortTest databean = new ArrayListMapSortTest();
     ArrayList al = databean.listFoldersAndFiles("F:\\");
     Collections.sort(al, new DataComparator());
     for (int i = 0; i < al.size(); i++) {
       HashMap hm = (HashMap) al.get(i);
       for (Iterator iter = hm.entrySet().iterator(); iter.hasNext(); ) {
         Map.Entry entry = (Map.Entry) iter.next();
         Object key = entry.getKey();
         Object val = entry.getValue();
         System.out.print(key + "    " + val + "   ");
       }
       System.out.println();
     }
   }
}
分享到:
评论

相关推荐

    Java学习过程中应该理解的一些重点内容

    容器是Java编程的一大利器,常用的类是:ArrayList (List)作为可变长数组、HashMap(Map)用来建立查找表,Set很少用,只在HashMap的使用中连带用过一些。通过对这两个类的熟悉,能够将List、Set和Map三大类的基本用法...

    Java 集合方面的面试题

    如何使用 Collections 类对集合进行排序? 什么是 Comparable 和 Comparator 接口?它们有什么区别? 如何使用 ConcurrentHashMap 类来实现线程安全的映射? 如何避免在多线程环境下对同一集合的并发修改? 如何使用...

    Java基础知识点.html

    哈希值 LinkedHashSet TreeSet 自然排序Comparable 比较器排序Comparator Set集合 并发修改异常 LinkedList集合 ArrayList集合 List集合 Collection集合概述 冒泡排序 Object 异常 Math 包装类 Calendar类 ...

    java常用工具类的使用

    该类的大部分构造器和方法都已经过时,但是该类使用非常方便,因此目前使用还很普遍,该类的另一个主要功能是,在数据库操作中,它允许将毫秒值表示为SQL DATE值,是数据库操作中java.sql.Date的父类。关于数据库...

    java实现别踩白块儿源码-SortedList:用Java编写的SortedList的实现。可以与实现Comparable接口的对象一起使用

    它是使用Comparator对象构造的,该对象可以将两个对象进行比较,从而使SortedList可以将其元素按升序或降序排序。 当且仅当要使用的对象实现Comparable接口时,我们也可以创建不带Comparator对象的SortedList。 用法...

    AIC的Java课程1-6章

     知道实现比较器(Comparable,Comparator)用于排序算法(多态性)。  [*]了解同步包装和不可修改包装。 第12章 IO与串行化 2课时  了解Java IO 中类的层次结构,介绍Java IO采用的装饰...

    Java服务器端开发面试.doc

    何时栈上创建,传递变量时候的按值传 递 Comparable 接口,Comparator类,用来做比较,主要是用于集合中,排序,插入等等 类初始化,变量初始化,静态变量,静态区,常量区等等 继承多态需要知道的有super, this, ...

    习----题-Java-Web程序设计教程-[共2页].pdf

    以 List 接口对象(ArrayList)为基础建立一个通信录,要求通信录中必须含有编号、姓名, 性别、电话、地址、Email 等。实现该类并包含添加、删除、修改、按姓名查等几个方法。编写 主程序测试。 参考如下。

    程序员需要经常刷题吗-simple-java-zh-CN:SimpleJava是Java常见问题的集合。中文翻译

    ArrayList vs. LinkedList vs. Vector HashSet 与 TreeSet 与 LinkedHashSet HashMap vs. TreeMap vs. HashTable vs. LinkedHashMap 按值排序地图 高效计数器 HashMap 常用方法。例如,按值排序 深入理解Arrays.sort...

    java编程练习题

    4、使用TreeSet和Comparator,写TreeSetTestInner 要求: 对TreeSet中的元素"HashSet"、"ArrayList"、"TreeMap"、"HashMap"、"TreeSet"、"LinkedList"进行升序和倒序排列 1. 使用匿名内部类实现 2. 使用静态内部类...

    策略模式的实现源代码实例

    Java API中的Collections有一个sort方法, sort(List&lt;T&gt; list, ...这个例子是通过一个Student的ArrayList,然后分别输出按照学生姓名字典排序结果和按照分数由高到低的排序结果。 是策略模式运用的一个很好实例!

    蓝桥杯leetcode-JavaBase:Java一些类测试用例

    实现Compare和Comparator的区别 3. Hash Hash值比较、HashSet特点、Final特点 4. Iterator 迭代器的用法 5. KeyWord volatiled和atomic 6. List ArrayList和LinkedList的区别和删除时注意的点 7. Proxy 静态代理和...

    java集合详解与总结

    排序:Comparable Comparator Collections.sort() ArrayList:底层用数组实现的List 特点:查询效率高,增删效率低 轻量级 线程不安全 LinkedList:底层用双向循环链表 实现的List 特点:查询效率低,增删效率高 ...

    Java学习笔记-个人整理的

    {4.1}\ttfamily java.util.ArrayList}{80}{section.4.1} {4.2}\ttfamily java.util.LinkedList}{81}{section.4.2} {4.3}贪吃蛇案例}{82}{section.4.3} {4.4}散列表与HashMap}{83}{section.4.4} {4.4.1}java....

    alphaordinal:比较数字的一种非常愚蠢的技术

    您可以使用实现Comparator&lt;Integer&gt; AlphaOrdinalComparator 。 例如,这是该项目的单元测试的摘录(虽然很简单,但是很容易映射到Java) def " AlphaOrderinalComparator should sort the numbers 0-9 " () { ...

Global site tag (gtag.js) - Google Analytics