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();
}
}
}
分享到:
相关推荐
2. 自定义Comparator排序: 如果ArrayList中的元素是自定义类,并且没有实现Comparable接口,或者需要按照非自然顺序进行排序,可以创建一个Comparator实例,并作为`Collections.sort()`方法的参数。例如,假设有一...
下面,让我们来看一个具体的例子,通过一个简单的Java程序演示Comparator接口的使用方法。假设我们有一个User类,其中包含姓名(name)和年龄(age)两个属性。我们需要对User对象列表按照年龄升序、姓名升序的规则进行...
在文件名为"ComparatorTest"的场景下,可能包含了一个测试用例,演示如何使用Comparator对ArrayList中的对象进行排序。通过阅读和理解这个测试用例,我们可以更深入地了解Comparator的工作原理以及如何在实际项目中...
Java 提供了多种方式进行排序,包括使用 `Collections.sort()` 方法配合自定义比较器(`Comparator`)。本文将详细介绍如何在 Java 中对包含中文姓氏的对象列表或字符串列表进行排序。 #### 二、基本概念 1. **...
下面我们将深入探讨如何在Java中实现集合的分组与排序。 1. **集合分组**: 集合分组通常涉及到`GroupingBy`操作,这在Java 8引入的流(Stream)API中得到了很好的支持。`Collectors.groupingBy`方法允许我们将...
除了让需要进行排序的对象的类实现Comparable接口外,我们还可以使用Comparator接口来实现ArrayList的自定义排序。Comparator接口中定义了compare()方法,该方法用于比较两个对象的大小。 例如,我们可以定义一个...
通过以上代码,我们可以清楚地理解如何在Java中利用ArrayList和Comparator实现对象的多属性值排序。这个过程涉及到面向对象设计、集合框架、比较器接口以及Java 8的新特性,这些都是Java程序员必备的基础知识。理解...
java实现ArrayList根据存储对象排序功能示例主要介绍了java中ArrayList的排序功能,通过构建新的比较对象Comparator实现排序操作。本文将详细讲解java中ArrayList的相关运算和排序操作技巧,并提供了一个实例形式的...
在 Java 中,对列表进行排序的最快方法是使用Collections.sort()方法,该方法使用的排序算法是 Timsort,它是归并排序和插入排序的结合体,具有高效的性能和稳定性。 在上述代码中,使用了 Comparator 接口来实现...
Java8 Comparator排序方法实例详解 Java8 Comparator排序方法实例详解是Java8中的一种排序方法,它提供了一些静态方法,方便我们进行排序操作。Comparator是一个函数式接口,提供了compare、equals、naturalOrder、...
然而,ArrayList本身并不提供排序功能,但我们可以借助Java的Collections类提供的sort()方法来实现排序。本文将通过三个示例详细讲解如何在Java中对ArrayList进行排序。 首先,我们来看一个简单的例子,创建一个名...
1. `sort(Comparator<? super E> c)`:根据提供的比较器对列表进行排序。 2. `reverse()`:反转列表中元素的顺序。 示例代码如下: ```java ArrayList<Integer> list = new ArrayList(); list.add(1); list.add(3);...
在Java中,我们还可以使用Comparator接口和Collator类来实现自定义排序。Collator类可以用来比较中文字符串,并且可以根据中文拼音进行排序。 ```java List<String> list = new ArrayList(); list.add("你"); list....
总结一下,这个示例展示了如何在Java中使用ArrayList,以及如何通过Comparator接口自定义排序规则。ArrayList是动态数组,提供便利的增删改查操作。`Collections.sort()`方法结合Comparator可以实现自定义排序,使得...
本项目聚焦于使用Java编程语言实现一个基于ArrayList的员工管理系统。ArrayList是Java集合框架中的一种动态数组,它提供了方便的数据存储和操作功能,特别适合用于小型数据集的存储。 在Java中,ArrayList类位于`...
在Java编程语言中,Comparable和Comparator接口是两个重要的概念,它们都用于对象的排序,但有着不同的使用场景和特点。本文将深入探讨这两个接口的区别,以及它们在实际开发中的应用。 首先,我们来了解一下...
这里我们将详细介绍如何使用`pinyin4j`这个Java库来实现中文字符串的拼音排序。 `pinyin4j`是一个强大的Java库,它提供了将汉字转换为拼音的功能,这使得我们可以基于每个汉字的拼音首字母来进行排序。以下是如何...
在Java编程语言中,排序是常见的操作,而`Comparable`和`Comparator`接口则是实现对象排序的两种主要方式。这篇文章将深入探讨这两种实现方式及其在实际编程中的应用。 首先,`Comparable`接口位于`java.lang`包下...
总结来说,Java中对Map进行排序通常涉及到HashMap与TreeMap的选择,以及Comparator的使用。对于对象属性Map的排序,需要先对Map进行排序,然后可能还要对对象列表进行排序。通过理解这些概念,开发者能够灵活地控制...