`
孟雪雪
  • 浏览: 53235 次
  • 性别: 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();
     }
   }
}
分享到:
评论

相关推荐

    arrayList排序

    2. 自定义Comparator排序: 如果ArrayList中的元素是自定义类,并且没有实现Comparable接口,或者需要按照非自然顺序进行排序,可以创建一个Comparator实例,并作为`Collections.sort()`方法的参数。例如,假设有一...

    详解JAVA使用Comparator接口实现自定义排序

    下面,让我们来看一个具体的例子,通过一个简单的Java程序演示Comparator接口的使用方法。假设我们有一个User类,其中包含姓名(name)和年龄(age)两个属性。我们需要对User对象列表按照年龄升序、姓名升序的规则进行...

    arraylist 对象 数组排序

    在文件名为"ComparatorTest"的场景下,可能包含了一个测试用例,演示如何使用Comparator对ArrayList中的对象进行排序。通过阅读和理解这个测试用例,我们可以更深入地了解Comparator的工作原理以及如何在实际项目中...

    java 中文姓氏 排序

    Java 提供了多种方式进行排序,包括使用 `Collections.sort()` 方法配合自定义比较器(`Comparator`)。本文将详细介绍如何在 Java 中对包含中文姓氏的对象列表或字符串列表进行排序。 #### 二、基本概念 1. **...

    java 集合分组与排序

    下面我们将深入探讨如何在Java中实现集合的分组与排序。 1. **集合分组**: 集合分组通常涉及到`GroupingBy`操作,这在Java 8引入的流(Stream)API中得到了很好的支持。`Collectors.groupingBy`方法允许我们将...

    Java针对ArrayList自定义排序的2种实现方法

    除了让需要进行排序的对象的类实现Comparable接口外,我们还可以使用Comparator接口来实现ArrayList的自定义排序。Comparator接口中定义了compare()方法,该方法用于比较两个对象的大小。 例如,我们可以定义一个...

    基于ArrayList的对象多属性值排序

    通过以上代码,我们可以清楚地理解如何在Java中利用ArrayList和Comparator实现对象的多属性值排序。这个过程涉及到面向对象设计、集合框架、比较器接口以及Java 8的新特性,这些都是Java程序员必备的基础知识。理解...

    java实现ArrayList根据存储对象排序功能示例

    java实现ArrayList根据存储对象排序功能示例主要介绍了java中ArrayList的排序功能,通过构建新的比较对象Comparator实现排序操作。本文将详细讲解java中ArrayList的相关运算和排序操作技巧,并提供了一个实例形式的...

    最快的排序算法 java最快的排序-在Java中对列表进行排序的最快方法,排序算法数据结构

    在 Java 中,对列表进行排序的最快方法是使用Collections.sort()方法,该方法使用的排序算法是 Timsort,它是归并排序和插入排序的结合体,具有高效的性能和稳定性。 在上述代码中,使用了 Comparator 接口来实现...

    Java8 Comparator排序方法实例详解

    Java8 Comparator排序方法实例详解 Java8 Comparator排序方法实例详解是Java8中的一种排序方法,它提供了一些静态方法,方便我们进行排序操作。Comparator是一个函数式接口,提供了compare、equals、naturalOrder、...

    java对ArrayList排序代码示例

    然而,ArrayList本身并不提供排序功能,但我们可以借助Java的Collections类提供的sort()方法来实现排序。本文将通过三个示例详细讲解如何在Java中对ArrayList进行排序。 首先,我们来看一个简单的例子,创建一个名...

    java中ArrayList的用法

    1. `sort(Comparator&lt;? super E&gt; c)`:根据提供的比较器对列表进行排序。 2. `reverse()`:反转列表中元素的顺序。 示例代码如下: ```java ArrayList&lt;Integer&gt; list = new ArrayList(); list.add(1); list.add(3);...

    java集合某个字段按照中文拼音排序.docx

    在Java中,我们还可以使用Comparator接口和Collator类来实现自定义排序。Collator类可以用来比较中文字符串,并且可以根据中文拼音进行排序。 ```java List&lt;String&gt; list = new ArrayList(); list.add("你"); list....

    java的arraylist排序示例(arraylist用法)

    总结一下,这个示例展示了如何在Java中使用ArrayList,以及如何通过Comparator接口自定义排序规则。ArrayList是动态数组,提供便利的增删改查操作。`Collections.sort()`方法结合Comparator可以实现自定义排序,使得...

    Java员工管理系统,ArrayList存储

    本项目聚焦于使用Java编程语言实现一个基于ArrayList的员工管理系统。ArrayList是Java集合框架中的一种动态数组,它提供了方便的数据存储和操作功能,特别适合用于小型数据集的存储。 在Java中,ArrayList类位于`...

    java中Comparable和Comparator的区别

    在Java编程语言中,Comparable和Comparator接口是两个重要的概念,它们都用于对象的排序,但有着不同的使用场景和特点。本文将深入探讨这两个接口的区别,以及它们在实际开发中的应用。 首先,我们来了解一下...

    Java 中文排序 使用pinyin4j组件

    这里我们将详细介绍如何使用`pinyin4j`这个Java库来实现中文字符串的拼音排序。 `pinyin4j`是一个强大的Java库,它提供了将汉字转换为拼音的功能,这使得我们可以基于每个汉字的拼音首字母来进行排序。以下是如何...

    Java中Comparable和Comparator 2种实现方式学习

    在Java编程语言中,排序是常见的操作,而`Comparable`和`Comparator`接口则是实现对象排序的两种主要方式。这篇文章将深入探讨这两种实现方式及其在实际编程中的应用。 首先,`Comparable`接口位于`java.lang`包下...

    Java 对象属性map排序示例

    总结来说,Java中对Map进行排序通常涉及到HashMap与TreeMap的选择,以及Comparator的使用。对于对象属性Map的排序,需要先对Map进行排序,然后可能还要对对象列表进行排序。通过理解这些概念,开发者能够灵活地控制...

Global site tag (gtag.js) - Google Analytics