比较数组

原创 2012年03月21日 16:34:17

 问题:
我该怎么知道两个数组是否相等呢
解决办法:
循环数组,一一比较对应位置的每个元素
讨论:
因为数组是引用类型,使用=操作符只能对比引用是否指向同一内存空间,如:
var letters:Array = ["a", "b", "c", "d"];
var lettersPointer:Array = letters;
trace(letters == lettersPointer); // 显示: true
但是如果数组内容相同,但是在不同的内存空间,=操作就会返回false:
var letters1:Array = ["a", "b", "c", "d"];
var letters2:Array = ["a", "b", "c", "d"];
trace(letters1 == letters2]; // 显示: false
因此,比较数组应该比较数组的每个元素是否相等:
var equivalent:Boolean = true;
for(var i:int = 0; i < letters1.length; i++) {
if(letters1[i] != letters2[i]) {
equivalent = false;
break;
}
}
trace(equivalent); // 显示: true
另外还可以用ArrayUtilities.equals( ) 方法,该方法需要两个参数:两个数组引用,返回布尔值说明
是否相等:
var letters1:Array = ["a", "b", "c", "d"];
var letters2:Array = ["a", "b", "c", "d"];
trace(ArrayUtilities.equals(letters1, letters2));
// 显示: true
默认,两个不同排列的数组是不相等的,除非提供第3个参数为true 表示忽略数组排列顺序:
var letters1:Array = ["a", "b", "c", "d"];
var letters2:Array = ["b", "a", "d", "c"];
trace(ArrayUtilities.equals(letters1, letters2));
// 显示: false
trace(ArrayUtilities.equals(letters1, letters2, true));
// 显示: true
equals( ) 方法用起来很简单,下面是它的代码:
public static function equals(arrayA:Array,
arrayB:Array,
bNotOrdered:Boolean):Boolean {
// 如果两个数组长度不同
if(arrayA.length != arrayB.length) {
return false;
}
// 创建拷贝,不影响原数组
var arrayACopy:Array = arrayA.concat( );
var arrayBCopy:Array = arrayB.concat( );
// 如果忽略排列顺序
if(bNotOrdered) {
arrayACopy.sort( );
arrayBCopy.sort( );
}
// 循环比较
// 如果不匹配,删除拷贝,返回false
for(var i:int = 0; i < arrayACopy.length; i++) {
if(arrayACopy[i] != arrayBCopy[i]) {
delete arrayACopy;
delete arrayBCopy;
return false;
}
}
// 否则相等,删除数组,返回true
delete arrayACopy;
delete arrayBCopy;
return true;
}

 

来自cookbook

char数组 、char指针与字符串常量的比较

数组不是基本类型,不能直接参与比较,数组与字符串及字符指针与字符串比较其实比较的是二者的地址。 例: int isequiv(char *t) { if (t == "char") return 1;...
  • zz460833359
  • zz460833359
  • 2015年09月30日 18:48
  • 2674

JAVA两个数组间元素的比较(找出相同或者不同元素)

1,找出两个数组中相同的元素 public static Set getIds(Integer[] a, Integer[] b){ Set same = new HashSet()...
  • Mr_linjw
  • Mr_linjw
  • 2015年12月23日 17:13
  • 17346

【C语言】比较两个数组中是否有相同的元素

比较两个数组中是否有相同的元素
  • LX18792732127
  • LX18792732127
  • 2016年09月22日 20:33
  • 3305

matlab数组扩展大小的三种方法及其比较

  • 2015年08月25日 17:33
  • 13KB
  • 下载

C#中各种数组的性能比较

  • 2010年03月07日 09:08
  • 4KB
  • 下载

VB数组性能比较测试

  • 2008年01月04日 09:58
  • 6KB
  • 下载

排序算法在不同数组状态下时间复杂度的比较

  • 2011年06月05日 10:31
  • 1.81MB
  • 下载

比较两个数组元素是否相同

  • 2013年10月06日 04:30
  • 1KB
  • 下载

为了解决比较复杂的问题,本章介绍C语言提供的一种最简单的构造类型──数组。

  • 2010年06月08日 23:08
  • 103KB
  • 下载

一个对数组操作比较好的class文件

  • 2013年12月19日 14:18
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:比较数组
举报原因:
原因补充:

(最多只允许输入30个字)