一. 简单排序
package test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class Test {
public static void main(String[] args) throws Exception {
//对列表排序
List list = new ArrayList();
list.add("aaa");
list.add("ccc");
list.add("bbb");
System.out.println("列表排序前");
System.out.println(list.get(0) + " " + list.get(1) + " " + list.get(2));
//对list进行字典排序
Collections.sort(list);
System.out.println("列表排序后");
System.out.println(list.get(0) + " " + list.get(1) + " " + list.get(2));
//对数组排序
String s[] = {"aaa", "ccc", "bbb"};
System.out.println("数组排序前");
System.out.println(s[0] + " " + s[1] + " " + s[2]);
Arrays.sort(s);
System.out.println("数组排序后");
System.out.println(s[0] + " " + s[1] + " " + s[2]);
}
}
二.稍微复杂点的
下面是对列表中的一个自实现hash表根据其key1字段值进行降序排列的例子排序。注意实现的关键在于被排序的对象类型实现了java.lang.Comparable接口。 看了下面的例子,相信列表中在存放其他类型,如javabean实现排序也就知道怎么做了。
package test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
public class Test {
public static void main(String[] args) throws Exception {
//对列表排序
List list = new ArrayList();
MyMap map1 = new MyMap();
map1.put("key1", 1);
MyMap map2 = new MyMap();
map2.put("key1", 2);
list.add(map1);
list.add(map2);
System.out.println("排序前");
System.out.println(list.get(0) + " " + list.get(1));
Collections.sort(list);
System.out.println("排序后(降序排列)");
System.out.println(list.get(0) + " " + list.get(1));
}
}
class MyMap extends HashMap implements Comparable {
public MyMap(){
super();
}
/**
* 降序排列
*/
public int compareTo(Object b) {
MyMap m = (MyMap) b;
int i = Integer.parseInt(this.get("key1") + "");
int you = Integer.parseInt(m.get("key1") + "");
if(i > you)
return -1;
else if(i < you)
return 1;
else
return 0;
}
}
当然也可以用下面的方法来排序,这就是引用匿名类的技巧
package test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@SuppressWarnings("unchecked")
public class Test {
public static void main(String[] args) throws Exception {
//对列表排序
List list = new ArrayList();
list = new ArrayList();
Map map11 = new HashMap();
map11.put("key1", 1);
Map map12 = new HashMap();
map12.put("key1", 2);
list.add(map11);
list.add(map12);
System.out.println("排序前");
System.out.println(list.get(0) + " " + list.get(1));
Collections.sort(list, new Comparator() {
public int compare(Object a, Object b) {
Map aa = (Map) a;
Map bb = (Map) b;
int i = Integer.parseInt(aa.get("key1") + "");
int you = Integer.parseInt(bb.get("key1") + "");
if(i > you)
return -1;
else if(i < you)
return 1;
else
return 0;
}
});
System.out.println("排序后(降序排列)");
System.out.println(list.get(0) + " " + list.get(1));
}
}
分享到:
相关推荐
1. **JSON数据格式**:了解JSON的基本结构,如对象(键值对,用花括号{}包围)和数组(有序元素列表,用方括号[]包围)。以及字符串、数字、布尔值、null等基本类型。 2. **JSONAPI规范**:理解资源、嵌套资源、...
Java集合框架中的`List`接口和数组(Array)是两种常用的数据结构,它们在处理数据时各有优势。下面我们将深入探讨如何在Java中实现集合的分组与排序。 1. **集合分组**: 集合分组通常涉及到`GroupingBy`操作,这...
Java字符串和数组是Java编程语言中的基本概念,对于任何Java开发者来说,理解和掌握它们都是至关重要的。在这21页的PDF教程中,我们很可能会深入探讨这两个核心主题。 首先,让我们来谈谈Java中的字符串。在Java中...
Java集合和数组是Java编程语言中的基础数据结构,...9. **集合的流式处理**:Java 8引入的Stream API,对集合进行函数式编程。 通过这些例子,你可以深入理解Java集合和数组在实际编程中的应用,提升你的编程技能。
`Collections`和`Arrays`两个类是Java中处理集合和数组的重要工具。`Collections`提供了一系列静态方法用于操作各种集合,包括排序、填充、反转等;而`Arrays`类则专注于数组的排序、比较和复制等操作。 在I/O流...
- **数据类型**:包括基本数据类型(如int, double, char等)和引用数据类型(如类、接口和数组)。 - **包(Package)**:Java的包机制帮助组织和管理类,如`java.lang`, `java.util`, `java.io`等。 - **异常...
类型注解(Type Annotations)允许在类型签名上使用注解,增强了静态分析工具和编译器的能力,例如在泛型类型参数、返回类型、参数类型和数组组件类型上使用注解。 以上只是JDK 1.8部分重要更新,实际的API中还有...
在`java.util.Collections`和`java.util.Arrays`类中增加了新的静态工厂方法,如`copyOf()`、`synchronizedList()`等,用于创建集合和数组,使得代码更加简洁。 八、并发改进 JDK 1.8对并发编程的支持也有所增强,...
【标题】"JAVA---ProjetoWorkArray:阵列研究设计" 涉及的主要知识点是Java编程语言中的数组处理和数组相关的设计与实现。数组在Java中是基础且重要的数据结构,它允许我们存储和操作同一类型的数据集合。在这个项目...
`Collections`和`Arrays`类添加了新的工厂方法,如`of()`、`copyOf()`等,方便创建不可变集合和数组。 10. **改进的异常处理** 异常检查更加灵活,可以抛出多个检查异常,避免了不必要的异常包裹。 11. **增强的...
`java.util.Collections`和`java.util.Arrays`类增加了新的工厂方法,如`Collections.emptyList()`、`Collections.emptyMap()`,以及`Arrays.asList()`,简化了集合和数组的创建。 Java API 1.7中文版的出现,使得...
- **集合和数组的比较**:集合是动态调整大小的容器,更加灵活;数组是固定大小的数据结构。 - **`Collection`和`Collections`的区别**: - `Collection`:接口,集合类的顶级接口。 - `Collections`:工具类,...
以上就是关于Java的常用包和数组复制排序的基本介绍。理解并熟练运用这些知识,将有助于提升Java编程的效率和质量。在实际开发中,还会涉及到更多高级特性和技巧,如多线程、并发控制、设计模式等,都需要不断学习和...
**基础语法**:Java的基础语法包括变量声明、数据类型(如整型、浮点型、字符型、布尔型)、运算符(算术、关系、逻辑、位、赋值等)、流程控制(如if语句、switch语句、for循环、while循环、do-while循环)和数组的...
- **第2章--数据类型**:Java的数据类型分为基本数据类型(如整型、浮点型、字符型和布尔型)和引用数据类型(如类、接口和数组)。理解每种数据类型的存储方式和使用场景是学习Java的基础。 - **第4章--数组方法*...
- **Jdk (Java Development Kit)**:Java开发工具包,包含了编译、运行Java程序所需的各种工具,例如`javac`(Java编译器)、`java`(Java解释器)以及其他辅助工具,比如调试器和文档生成工具等。 - **Jre (Java ...
Java 7在`Collections`和`Arrays`类中添加了一些工厂方法,简化了集合和数组的初始化。例如,创建一个不可变列表: ```java List<String> list = Collections.unmodifiableList(Arrays.asList("a", "b", "c")); ...
- 引用数据类型指的是类、接口和数组。 - 运算符包括算术运算符、比较运算符、逻辑运算符等,表达式用于组合这些运算符以执行特定计算。 - 语句和流程控制包括条件语句(if, if-else, switch)、循环语句(for, ...
- **集合概念**:理解集合的作用,比较集合和数组的区别。 - **集合框架**:熟悉Collection和Map接口,学习泛型的使用,理解ArrayList、LinkedList、Vector和Stack的特点。 - **遍历与迭代器**:掌握各种遍历集合的...