读书人

关于移除一个int[]数组中重复项的有关

发布时间: 2012-01-02 22:40:04 作者: rapoo

关于移除一个int[]数组中重复项的问题, 在线急等~~
我的想法:
定义一个数组:b[a.Length]
遍历数组a,对每一个a[i],判断是否在b中

if a[i]在b中,继续
else 把a[i]加到b中,

我的问题是 如果 a[i]在b中, 应该怎样继续检查下一个? 如果是string可以令a[i]=null, 但是是int[],应该怎样用java语言表达呢?

[解决办法]
如果是int你可以用Integer这种类型也可以让它等于null.
[解决办法]
关建字continue
[解决办法]
参考一下下面的函数:
import java.util.ArrayList;
import java.util.List;
---------------------------
/**
* 去掉重复项的函数
*@param intArray 要去掉重复项的int数组
*@return int[] 返回去掉重复项的int数组
*/
public int[] wipeOffRepeat(int[] intArray){
List list = new ArrayList();
for(int i = 0;i < intArray.length;i++){
if( !list.contains(new Integer(intArray[i]))){
list.add(new Integer(intArray[i]));
}
}
int[] returnArray = new int[list.size()];
for(int i = 0; i < list.size();i++){
returnArray[i] = ((Integer)list.get(i)).intValue();
}
return returnArray;

}
[解决办法]
何必弄这么复杂呢,方法有简单的解决方案的时候,还是选择简单的解决方法比较好了

建议使用诸如ArrayList之类的方法来处理

ArrayList <Integer> list = new ArrayList <Integer> ();
int[] is = new int[]{1,2,3,3};
for(int i = 0; i < is.length; i++){
if(!list.contains(new Integer(is[i])))
list.add(new Integer(is[i]));
}
Integer[] iis = (Integer[]) list.toArray();
[解决办法]
你的数组越界了,(j=1;j < p.length-1; j++)你看看这样行不行!
[解决办法]
建个hashmap
把所有数put进去,在get出来,就没重复的了
[解决办法]
HasSet 去重复
[解决办法]
不用另外定义一个数组,直接比较就可以了。

int num = a.length;
loop: for (int i = 1; i < num; ) {
// 从第二个元素开始处理
for (int j = 0; j < i; j++) {
// 把当前元素跟前面的每个元素进行比较
if (a[i] == a[j]) {
// 如果发现重复,用最末的元素替换当前元素
a[i] = a[num - 1];
num--;
// 重新处理当前元素
continue loop;
}
}
// 继续处理下一个元素
i++;
}

// 至此,a[0]..a[num-1] 就是无重复的了

[解决办法]
上面已经说了,直接使用HashSet

有重复的就不加进去,否则就加进去,多简单的。。
[解决办法]
先排序,再遍历。
或者最简单的用hashmap
[解决办法]
日本松下有一位高官说过:即使我们不去拜靖国神社韩国人也不会买我们的产品,但不管我们再怎样的去拜靖国神社,中国人照样会买我们的产品。----- 一句让中国人从头凉到脚的话。 每直接或间接地购买100元日本货,你就: 1.为日本厂家增加40元的毛利收入 2.为日本企业增加了20元的扩张资本 3.为日本政府增加了5元的税收收入 4.给日本的所谓自慰队增加了 10颗子弹 5.多印6~8页的篡改历史的教科书和文件 6.送给小犬蠢一狼参拜鬼社的汽油费 **。如果你买日本汽车,将来开上中国街头的日本坦克就是你造的!! **。如果你买日本橱具,将来射穿你儿子头颅的子弹就是你造的!! **。如果你买日本电视音响,将来就会在战地喇叭中听到中国人被杀的哀鸣!!!我们没有时间和权力去采取政治行动,我们只能作力所能及的事,拒买日货是我们对付日本人的最好行动,不但简单而且有效.我每天上网必做的一件事就是把此这篇文章贴到可能的地方,只要上网,我至少要贴上10次!!!作为一个有良知的中国人,来和我和许多爱国人士一起并肩战斗吧!! 请把此文贴到一切可能的地方,你一定会为你的所作所为而自豪



朋友们,我庆幸我生于80年代,但我更加痛惜我没能在30年代的战场上手刃鬼子。在我们拥有和平幸福安乐生活的今天,请不要忘了我们爷爷那一代所受到的耻辱!!
[解决办法]
不好意思,这些都不懂...JAVA语言一点也不懂...

[解决办法]
如果是在做项目,直接用Set型的类,如HashSet,如果要保持输入顺序可用LinkedHashSet,因为Set型类,就是为了保证容器中的元素不能重复。不要用List型,Map型只能保证Key不重复,用Set型的类后,什么算法代码都不用写,直接add就行了。
如果是在做作业,特别是数据结构的作业,还是自己先搞懂再说吧。

[解决办法]
int[] a={1,2,3,4,2,4,3};
int[] b=new int[a.length];
int bnum=0;
boolean finded;
for(int i=0;i <a.length;i++){
finded=true;
for(int j=0;j <b.length;j++){if(a[i]==b[j]){finded=false;}}
if(finded){b[bnum]=a[i];bnum++;}

}
for(int i=0;i <a.length;i++){System.out.print(a[i]);}
System.out.println( " ");
for(int i=0;i <b.length;i++){System.out.print(b[i]);}


--------------------------
1234243

1234000

[解决办法]
关注
[解决办法]
用一个For语句就行了,性能很重要。
[解决办法]
for( length)
if(array.IndexOf(currentOne)==-1)
array.add (currentOne);
[解决办法]
直接用temp--
[解决办法]
int[] a=new int[]{1,1,2,2,3,3,4,4,5,5};
HashSet set=new LinkedHashSet();
for(int i=0;i <a.length;i++)
{
set.add(a[i]);
}
int[] b=new int[set.size()];
int c=0;
for(Iterator it=set.iterator();it.hasNext();)
{
b[c]=(Integer)it.next();
System.out.println(b[c]);
c++;

}
[解决办法]
楼上的方法不错!

读书人网 >J2SE开发

热点推荐