一. 简单排序
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集合和数组在实际编程中的应用,提升你的编程技能。
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面试题集 #### 1. Java基础知识 - **基本数据类型与引用数据类型** - Java中有八种基本数据类型:byte、short、int...
Java Lambda表达式和Stream API是Java 8引入的两个强大的特性,用于简化集合和数组的操作。 Lambda表达式允许我们将行为作为参数传递给方法,或者作为表达式的结果返回。它使得我们可以以更简洁的方式编写匿名内部...
以上就是关于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 ...