自己写一个对对象内部数据的排序,有几点想法:
第一:参考comparable 的comparaTo()以及mergeSort()方法;
第二:参考arrays的sort方法
几个疑问:
第一:关于排序法的区别?耗费的时间?
第二:怎么做到算法的通用?
高手指点指点...
贴代码:
public interface Generator {
Object next();
}
package star20110427;
import java.util.Random;
import star20110426.Generator;
/**
* 二维数组排序
* @author *
*/
public class SimpleSort {
private static Random random = new Random();
private static Generator getGenerator(){
return new Generator(){
@Override
public Object next() {
return new Num(random.nextInt(100),random.nextInt(100));
}
};
}
private static Num[] getNums(int count){
Num[] nums = new Num[count];
for (int i = 0; i < nums.length; i++) {
nums[i] = (Num) getGenerator().next();
}
return nums;
}
public static void main(String[] args) {
Num[] nums = getNums(1000);
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
for (int i = 0; i < nums.length; i++) {
for (int j = nums.length-1; j > i; j--) {
if (nums[i].i > nums[j].i) {
Num temp = nums[j];
nums[j] = nums[i];
nums[i] = temp;
}
if (nums[i].i == nums[j].i) {
if (nums[i].j > nums[j].j) {
Num temp = nums[j];
nums[j] = nums[i];
nums[i] = temp;
}
}
}
}
System.out.println("===================");
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
}
}
class Num{
int i ;
int j;
public Num(int i,int j) {
this.i = i;
this.j = j;
}
public int getI() {
return i;
}
public void setI(int i) {
this.i = i;
}
public int getJ() {
return j;
}
public void setJ(int j) {
this.j = j;
}
@Override
public String toString() {
return "i="+i+" j="+j;
}
}
分享到:
相关推荐
在Java编程中,对象数组排序是一项常见的任务,...以上就是关于“JAVA 对象数组按照多个属性进行排序”的详细解析,希望对你理解Java排序机制有所帮助。在实际开发中,灵活运用这些技巧可以提高代码的可维护性和效率。
【面向对象Java排序包】是基于Java编程语言设计的一个专门用于处理排序问题的软件组件。这个包充分体现了面向对象的设计原则,将数据结构、算法和业务逻辑封装在独立的对象中,提高了代码的可读性和可维护性。它不仅...
如果我们需要对一个对象列表中的某个字段(如年龄)进行排序,可以创建一个 `Comparator` 实现。 ```java import java.util.*; import java.text.*; public class JobCandidateSort { public static void main...
然后,我们创建一个Person对象的List,并使用`Collections.sort()`进行排序: ```java List<Person> people = new ArrayList(); people.add(new Person("Alice", 30)); people.add(new Person("Bob", 25)); people....
Java排序是程序开发中常见的一种任务,主要用于对数据集合进行有序排列。在Java中,有多种内置和自定义的排序算法可供选择,每种都有其特定的适用场景和性能特点。下面将详细介绍几种常见的Java排序方法。 1. **...
在Java中,封装是面向对象编程的一个重要原则,它将数据和操作数据的方法绑定在一起,形成一个独立的单元,提高了代码的可维护性和复用性。在这些排序算法的实现中,我们可能看到类的使用,每个类代表一种排序算法,...
在Java编程中,有时我们需要对一组参数...通过以上分析,我们可以看到`createSign`方法在处理参数排序时的高效和灵活性,它是Java编程中处理有序数据的一个典型应用。在实际项目中,可以根据需求对其进行调整和优化。
在编程领域,排序是至关重要的一个环节,尤其是在Java这样的面向对象语言中。本文将深入探讨Java中的各种排序方法以及它们的改良策略。首先,我们来看看几种基础的排序算法,然后讨论如何通过优化来提高这些算法的...
在Java编程语言中,对中文字符串进行排序是一个相对复杂的问题,因为中文字符的排序不能简单地按照Unicode编码顺序来处理。通常,我们需要考虑汉字的拼音或者笔画等属性来进行排序。这里我们将详细介绍如何使用`...
首先,SortedSet是Java集合框架中的一个接口,它继承自Set接口并添加了排序的特性。SortedSet的主要实现类有TreeSet,它基于红黑树(Red-Black Tree)数据结构,保证了插入、删除和查找操作的高效性。 要实现Java...
本文件“数据结构之JAVA排序JAVASORT.pdf”很可能是对Java中排序算法的一个深入探讨。下面我们将详细讲解Java中的排序算法及其重要性。 首先,我们要理解什么是排序。排序是指将一组数据按照特定的顺序进行排列的...
Java集合框架是Java编程语言中一个非常重要的组成部分,它提供了数据结构和算法的实现,使得在处理对象集合时更加高效和灵活。集合框架包括接口、类和算法,这些都集中在`java.util`包中。主要的集合接口有List、Set...
Java数据结构与面向对象编程是计算机科学中的核心概念,它们对于任何Java开发者来说都是不可或缺的知识。数据结构是指在计算机中组织、存储和处理数据的方式,而面向对象编程(Object-Oriented Programming,OOP)是...
在这个“java版本List中对象多属性排序.rar”压缩包中,我们可能找到了一个关于如何在Java中实现此类排序的示例或教程。 首先,让我们理解基本概念。在Java中,`List`接口是`Collection`框架的一部分,它允许我们...
当我们需要自定义排序规则时,可以通过传递一个实现了`Comparator`接口的匿名内部类给`TreeMap`构造函数来实现。在提供的代码片段中,我们看到了两种自定义排序的例子: a) 对于简单的排序,如数字和英文字母,...
在Java编程语言中,对用户名进行比较排序是一个常见的任务,特别是在开发用户管理系统或者任何涉及到用户数据展示的应用中。这个任务通常涉及到字符串的比较和排序,Java提供了强大的工具来实现这一功能。下面我们将...
Java 中的排序可以分为三种类型:简单类型排序、内部对象实现 Comparable 和外部对象实现 Comparator。 简单类型排序 简单类型包括 byte, char, short, int, long, float, double 等数据类型。这些类型不能放在...
在编程领域,排序是至关重要的一个概念,尤其是在Java这样的面向对象编程语言中。本文将深入探讨Java中的各种排序算法,帮助你巩固理解并提升编程技能。 首先,我们从最基本的内部排序算法开始,如冒泡排序(Bubble...
它选取一个基准值,将数组分为小于基准值和大于基准值的两部分,然后递归地对这两部分进行排序。快速排序的平均时间复杂度为O(n log n)。 在Java中,`Arrays.sort()` 方法提供了对数组的排序功能,它内部实现了高效...
例如,对于整数数组,我们可以使用`Arrays.sort(int[])`,而对于自定义对象,我们需要实现`Comparable`接口或者提供一个`Comparator`来定义比较规则。 1. **冒泡排序**:这是一种简单的排序算法,通过重复遍历待...