首页 > 编程知识 正文

数组去重并输出重复的数字,删除数组中重复元素java

时间:2023-05-05 08:25:54 阅读:42534 作者:1231

1 .遍历排列法

这是最简单的数组重建方法(索引关闭方法)

实现想法:创建新数组,遍历重数组,并在值不在新数组中时(索引为-1)将其添加到新数组中

vararr=[ 2,8,5,0,5,2,6,7,2 ];

功能单元1 (arr ) {

var hash=[];

for(varI=0; i arr.length; I ) {

if(hash.indexof(ARR[I] )==-1 ) {

hash.push(ARR[I];

}

}

返回散列;

}

2 .排列下标判定法

调用indexOf方法时,性能与方法1相同

实现思路:如果当前数组的第I项在当前数组中第一个出现的位置不是I,则第I项表示重复,忽略。 否则将其存储在结果数组中。

功能unique2(arr ) {

var hash=[];

for(varI=0; i arr.length; I ) {

if(arr.indexof(arr[I] )==i ) {

hash.push(ARR[I];

}

}

返回散列;

}

3 .排序后的相邻消除法

实现思路:如果对传递的数组进行排序,则在排序后相同的值会相邻。 然后,在遍历排序后的数组时,新数组仅添加与前一个值不重复的值。

功能单元3 (arr ) {

arr.sort (;

var hash=[arr[0]];

for(varI=1; i arr.length; I ) {

if(ARR[I]!=hash[hash.length-1]

hash.push(ARR[I];

}

}

返回散列;

}

4 .扫描排列法的优化(推荐) ) ) ) ) ) ) )。

实现思路:双循环、外循环由0到arr.length,内循环由i 1到arr.length

将不重复的右侧值放入新数组中。 (如果检测到重复值,则结束当前循环,进入外层循环的下一个判定) ) ) ) ) )。

功能unique4(arr ) {

var hash=[];

for(varI=0; i arr.length; I ) {

for(varj=I1; j arr.length; j ) {

if(arr[I]===arr[j] ) {

I;

}

}

hash.push(ARR[I];

}

返回散列;

}

5 .实现es6

基本思路: ES6提供新的数据结构集。 与数组类似,但成员的所有值都是唯一的,没有重复的值。

Set函数可以接受数组(或对象,如数组)作为参数进行初始化。

功能unique5(arr ) {

varx=newset(arr );

return [.x];

}

扩展:如果重复,则删除元素

数组的下标太重了

功能unique 22 (arr ) {

var hash=[];

for(varI=0; i arr.length; I ) {

if (arr.index of (arr [ I ]==arr.lastindexof (arr [ I ] ) ) )

hash.push(ARR[I];

}

}

返回散列;

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。