
正文
go语言数组存在重复元素 go string数组
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Go语言数组去重
在使用Go语言的时候,碰到了需要对数组进行去重操作的问题。Java语言有Set集合这个数据结构,可以很方便的将数组转为集合,但是Go语言没有Set,如果仅仅是因为去重操作就手动实现一个Set太繁琐了。可以根据Go语言中的map的特性来简单实现一下
这个是对字符串数组去重操作。可以根据需要的类型稍作修改即可。需要注意的是只支持可以作为map键的结构进行去重!
相关问答
Q1: 判断数组中是不是存在重复元素
/**
* 判断整型数组中是否含有重复的元素
* @param arr
*/
private void checkIsRepeat(int[] arr){
boolean flag = true; //假设不重复
for(int i = 0;i arr.length-1;i++){ //循环开始元素
for(int j = i + 1;j arr.length;j++){ //循环后续所有元素
//如果相等,则重复
if(arr[i] == arr[j]){
flag = false; //设置标志变量为重复
System.out.println("重复的值为:"+arr[i]);
break; //结束循环
}
}
}
//判断标志变量
if(flag){
System.out.println("数组没有重复的元素");
}else{
System.out.println("数组含有重复的元素");
}
}
Q2: 如何把一个数组中的重复元素分类
可以使用双重循环,逐一对比元素,如有重复,则删除的方法去重。
其思路为
1、依次遍历循环中的每一个元素。
2、对于任意一个元素,依次与之前的元素进行对比,如果有重复则删除。
3、删除操作可以采用将后续元素逐个前移,达到覆盖当前元素的效果。
在此基础上可以进行一点优化,即,不需要每次删除元素均前移所有元素,而是把需要保留的元素放到"应该"放的位置即可,这样可以提高效率。
以整型数组为例,参考代码如下:
int remove_repeat(int *a, int l)//对起始地址为a,长度为l的数组进行去重,新的长度以返回值形式返回。{ int i,j, r=0; //i,j为循环下标,r为去重后元素总数,初始值为0 for(i = 0; i l; i ++) { for(j = 0; j r; j ++)//检查是否重复 if(a[j] == a[i]) break; if(j == r) //没有重复元素 a[r++] = a[i]; //将当前元素放置与去重后数组的尾部,并增加去重后的总数。 } return r; //返回新的长度。}
Q3: foreach 和indexof判断数组中是否存在重复的元素
forEach的用法是挨个获取数组的元素传给回调函数,indexOf是首次获取到的值,lastIndexOf是最后一次获取到的值,如果两个值相等,说明字符串只出现过一次,表示不重复。
var arr=["aa","ab","aa","ad"]; //数组
var isRepeat=false; //数组是否有重复,为true时表示有重复
arr.forEach(
function(item){
if(arr.toString().indexOf(item)!=arr.toString().lastIndexOf(item) arr.toString().indexOf(item)!=-1)
{
isRepeat=true;
}
});
if(isRepeat)
alert("数组有重复");
else
alert("数组没有重复");
Q4: 如何判断数组中是否存在重复的值
所谓数组,是相同数据类型的元素按一定顺序排列的集合。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。
判断数组是是否存在某数据,可以使用循环来遍历查询
代码如下:
function arrayRepeat($_value,$_array=array()){
foreach ($_array as $key = $value) {
if($value==$_value){
return TRUE;
}
}
return FALSE;
}
返回类型为:BOOL,存在则返回TRUE否则返回FALSE
foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。有两种语法:
foreach (array_expression as $value)
statement
foreach (array_expression as $key = $value)
statement
第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。
第二种格式做同样的事,只除了当前单元的键名也会在每次循环中被赋给变量 $key。
还能够自定义遍历对象。
完整测试代码如下:
?php
$arr=array();
for ($i=0; $i 100 ; $i++) {
$arr[$i]=rand(1, 100);
}
//上面代码为生成测试数据
var_dump(arrayRepeat(1,$arr));
function arrayRepeat($_value,$_array=array()){
foreach ($_array as $key = $value) {
if($value==$_value){
return TRUE;
}
}
return FALSE;
}
?
关于go语言数组存在重复元素和go string数组的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






