使用Array sortOn(...)给一组对象排序示例
这个示例展示了Array类的sortOn(...)方法对一组同类型的对象通过他们相同的属性值对他们进行排序的过程。
下面定义一个 Person类Person.as
在定义一个文档类Main.as来实现产生一组Person类的实例,这组实例是按照age属性升序产生的,并由age的值给这些实例按照降序来列。
这个系统自带的排序方法的效率很高,值得广泛使用。
这个排序方法很可能是as3中效率最高应用最方便的排序方法。
建议排序向这里靠。
下面定义一个 Person类Person.as
package
{
/**
示例类
*/
public class Person{
public var age:Number = 0;
public function Person(){
}
}
}
{
/**
示例类
*/
public class Person{
public var age:Number = 0;
public function Person(){
}
}
}
在定义一个文档类Main.as来实现产生一组Person类的实例,这组实例是按照age属性升序产生的,并由age的值给这些实例按照降序来列。
package
{
/**
* Copyright (C) 2008-2010 Vily
*
* @class name(类名): Main
*
* @author(创建人): Vily
*
* @version(版本): v1.1
*
* @create date(创建日期): 2009-10-12
*
* @purpose(对此类实现的功能的描述):Main文档类
*
* @public properties(公开的属性): None. Static constants only.
* @public methods(公开的方法):
* Main( ) - Constructor.
*
*/
import flash.display.Sprite;
import flash.utils.getTimer;
public class Main extends Sprite{
private var person_Arr:Array = [];
//private var _ms:MergeSort = new MergeSort();
public function Main(){
init();
}
/**
* 系统程序初始化入口
*/
private function init():void{
trace("init
");
initObj();
initDispObj();
initListener();
}
/**
* 初始化非显示对象
*/
private function initObj():void{
//升序产生100000个Person实例
var num:int = 100000;
for(var i:int = 0;i<num;i++){
person_Arr[i] = new Person();
person_Arr[i].age = i + 20;//Math.round(Math.random() * 1000);
//trace(person_Arr[i].age);
}
//trace("-------------------- --------- -------------");
var t:Number = getTimer();
//降序排列
person_Arr.sortOn("age", Array.DESCENDING | Array.NUMERIC);
trace("time: "+(getTimer() - t));
//trace("out----- ------------- ----\\");
/*for(i = 0;i<num;i++){
trace(person_Arr[i].age);
}*/
}
/**
* 初始化显示对象
*/
private function initDispObj():void{
}
/**
* 初始化侦听器
*/
private function initListener():void{
}
}
}
{
/**
* Copyright (C) 2008-2010 Vily
*
* @class name(类名): Main
*
* @author(创建人): Vily
*
* @version(版本): v1.1
*
* @create date(创建日期): 2009-10-12
*
* @purpose(对此类实现的功能的描述):Main文档类
*
* @public properties(公开的属性): None. Static constants only.
* @public methods(公开的方法):
* Main( ) - Constructor.
*
*/
import flash.display.Sprite;
import flash.utils.getTimer;
public class Main extends Sprite{
private var person_Arr:Array = [];
//private var _ms:MergeSort = new MergeSort();
public function Main(){
init();
}
/**
* 系统程序初始化入口
*/
private function init():void{
trace("init

initObj();
initDispObj();
initListener();
}
/**
* 初始化非显示对象
*/
private function initObj():void{
//升序产生100000个Person实例
var num:int = 100000;
for(var i:int = 0;i<num;i++){
person_Arr[i] = new Person();
person_Arr[i].age = i + 20;//Math.round(Math.random() * 1000);
//trace(person_Arr[i].age);
}
//trace("-------------------- --------- -------------");
var t:Number = getTimer();
//降序排列
person_Arr.sortOn("age", Array.DESCENDING | Array.NUMERIC);
trace("time: "+(getTimer() - t));
//trace("out----- ------------- ----\\");
/*for(i = 0;i<num;i++){
trace(person_Arr[i].age);
}*/
}
/**
* 初始化显示对象
*/
private function initDispObj():void{
}
/**
* 初始化侦听器
*/
private function initListener():void{
}
}
}
这个系统自带的排序方法的效率很高,值得广泛使用。
这个排序方法很可能是as3中效率最高应用最方便的排序方法。
建议排序向这里靠。