黑马程序员技术交流社区
标题:
数组问题
[打印本页]
作者:
pengwei1989
时间:
2015-9-19 09:39
标题:
数组问题
怎么把数组中重复的元素去掉,打印剩下的元素。
作者:
heshiwei
时间:
2015-9-19 10:22
这个问题看到很多遍了,思路就是把数组的元素一个一个取出来存到另一个数组里。只要在存的时候判断是否存在即可!
作者:
YC匪帮
时间:
2015-9-19 10:29
使用set集合!!!
作者:
orgcheng
时间:
2015-9-19 10:34
package com.itheima;
import java.util.ArrayList;
import java.util.HashSet;
/*
* 第七题:数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8}
*/
public class Test7 {
public static void main(String[] args) {
// 原始数组
int[] array = new int[] { 4, 2, 4, 6, 1, 2, 4, 7, 8 };
HashSet<Integer> set = new HashSet<>(); // 保存出现过的原素
ArrayList<Integer> result = new ArrayList<>(); // 保存去重后的结果
for (int i = 0; i < array.length; ++i) {
// 如果array[i]没有出现过,就添加到set并保存到结果中
if (!set.contains(array[i])) {
result.add(array[i]);
set.add(array[i]);
}
}
// 打印结果
System.out.println(result);
}
}
复制代码
作者:
pengwei1989
时间:
2015-9-19 11:30
orgcheng 发表于 2015-9-19 10:34
我才看到面向对象这一块,有没有比你这低级一点的方法。。。。。。
作者:
霹雳三口组
时间:
2015-9-19 11:55
我也刚看,java不知道有没有去重方法啊
作者:
枕草虫
时间:
2015-9-19 12:13
如果还没学到集合的话可以使用另外一个数组,然后将原数组的中的元素存过去,在每一次存的过程中,都与新数组里面的每一个元素进行比较,如果不相同就存进去。但是长度不好确定。
StringBuilder如果学到了的话也可以使用StringBuilder,然后使用indexOf 的方法,如果返回-1就存进去,但每存一次都要再存一个,(逗号),到最后一个就不用存逗号了,接着使用toString方法返回里面的内容字符串,利用String类里面的split方法返回一个String类型的数组,接着就看需求了,如果是int型就用Integer.parseInt()再转呗。
但这些都不太好用,还是集合好用一些。使用LinkedHashSet,会自动过滤掉相同元素,并且会按存入顺序返回。
作者:
orgcheng
时间:
2015-9-19 14:36
pengwei1989 发表于 2015-9-19 11:30
我才看到面向对象这一块,有没有比你这低级一点的方法。。。。。。
如果让你去打仗,AK47和小米加步枪你会选择那种武器?
当然是AK47,不会用就学呗,不学啥时候都不会用。
Java提供集合类库,就是为了方便实现编码的。
作者:
清心玉质
时间:
2015-9-19 14:57
set存储的元素是不重复的 直接放到set里就行了
import java.util.HashSet;
public class quChong {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a = {3,4,6,7,8,8,2,3,4};
HashSet<Integer> hs = new HashSet<Integer>();
for(int i=0;i<a.length;i++){
hs.add(a[i]);
}
System.out.println(hs);
}
}
作者:
横溢天使
时间:
2015-9-19 16:13
还没看到集合,表示,看不懂啊
作者:
lion_good
时间:
2015-9-19 16:16
我顶......
作者:
德胜
时间:
2015-9-19 16:30
哥们飘过,呵呵
作者:
fmi110
时间:
2015-9-19 16:54
我觉的这个方法你应该能理解
class Temp {
public static void main(String[] args) {
// 旧数组
int[] arrOld = { 1, 2, 4, 5, 6, 2, 3, 2 };
// 新建一个数组用于装不重复的元素
int[] arrNew = new int[arrOld.length];
int j = 0;
// 逐个复制元素到新数组,如果元素已经存在则不复制
for (int i = 0; i < arrOld.length; i++) {
if (isContain(arrOld[i], arrNew)) {// 判断是否已经有次元素
continue;
}
arrNew[j] = arrOld[i];
j++;//同时记录数组中不重复的个数
}
printArr(arrOld);
System.out.println("去重后的数组:");
for(int i = 0; i < j ; i++)
System.out.print(arrNew[i]+" ");
}
private static void printArr(int[] arr) {// 打印数组
for (int i : arr) {
System.out.print(i + " ");
}
System.out.println();
}
private static boolean isContain(int i, int[] arrNew) {
//遍历数组看是否已经含有此元素
for (int j = 0; j < arrNew.length; j++) {
if(i == arrNew[j]){
return true;
}
}
return false;
}
}[code]运行结果
1 2 4 5 6 2 3 2
去重后的数组:
1 2 4 5 6 3
复制代码
[/code]
作者:
beyond1337
时间:
2015-9-19 17:02
数组中可以有重复的元素啊?我都不知道,基础太不牢了.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2