黑马程序员技术交流社区
标题:
array去重
[打印本页]
作者:
梧桐树上的男人
时间:
2016-3-25 22:48
标题:
array去重
一个数组中有重复元素,再定义一个新数组把旧数组中的元素放到新数组中,但是不放重复的元素
这个算法怎么实现啊,求大神指教
作者:
452296824
时间:
2016-3-25 23:56
public class Test02 {
public static void main(String[] args) {
int[] arr = {6,2,9,6,1,2,6,7,8};
arr = getSingleArr(arr);
System.out.println(Arrays.toString(arr));
System.out.println("==============");
int[] arr2 = new int[]{6,2,9,6,1,2,6,7,8};
System.out.println(printArr(arr2));
}
//数组去重的方法
public static int[] getSingleArr(int[] arr) {
//index表示既能表示当前存入数据在新数组中的位置,又能表示存数新数组中的数据的个数
int index = 0;
//1.定义一个和老数组长度相同的数组
int[] newArr = new int[arr.length];
//2.遍历老数组的内容
for(int i = 0;i<arr.length;i++) {
//3.定义flag标记,表示新数组中是否包含当前遍历到的老数组内容
boolean flag = false;
//4.遍历新数组,查看是否包含老数组中的当前元素,如果不包含,flag置为true
for (int j = 0;j<newArr.length;j++) {
if (arr[i] == newArr[j]) {
flag = true;
break;
}
}
//5.flag为false时说明新数组中不包含当前遍历的老数组的内容,并将当前遍历的老数组的元素存入新数组中
if (!flag) {
newArr[index++] = arr[i];
}
}
//return Arrays.copyOf(newArr, index);
//6.去除新数组中的无效的元素
//7.定义一个需要返回给调用者的数组returnArr,该数组的长度为index
int[] returnArr = new int[index];
//8.将新数组中的index个元素存入returnArr数组中,并将该数组返回
for(int i=0;i<index;i++) {
returnArr[i] = newArr[i];
}
return returnArr;
}
//自定义打印数组的方法prinArr,格式{6, 2, 9, 1, 7, 8}
public static String printArr(int[] arr) {
//1.如果arr==null,直接返回"null"
if(null == arr) {
return "null";
}
//2.如果数组的长度为0,直接返回"[]"
int maxLength = arr.length-1;
String s = "";
if(-1==maxLength) {
return "[]";
}
//3.遍历数组元素将数组封装成"[6, 2, 9, 1, 7, 8]"格式
s+="{";
for(int index = 0;;index++ ) {
s+=arr[index];
if(index==maxLength)
return s+"}";
s+=", ";
}
}
}
复制代码
作者:
zhoubinjian
时间:
2016-3-26 01:43
楼上Arrays没有定义。。。
作者:
黄盖打周瑜
时间:
2016-3-26 11:10
可以把数组用toarray转成集合放到HashSet集合里面就可以去重复了
作者:
zhangyibiao
时间:
2016-3-26 11:17
每次获取旧数组中的数字时可以判断一下是否以前的是否已经有了,有了就不操作,直接下一个,没有就拿出来放到新数组中
作者:
adomwon
时间:
2016-3-26 12:18
用集合来做,更方便,操作简单
作者:
luomoss
时间:
2016-3-26 12:53
看代码,纯数组操作
Test002.zip
2016-3-26 12:53 上传
点击文件名下载附件
944 Bytes, 阅读权限:
100
, 下载次数: 0
作者:
ruigao1993
时间:
2016-3-31 16:44
public void test2(){
HashSet<Integer> set=new HashSet<Integer>();
int[] arr=new int[]{1,2,2,3,3,4,5,6,7,8,};
for(int i=0;i<arr.length;i++){
set.add(arr[i]);
}
System.out.println(set);
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2