日期:2014-05-20  浏览次数:20745 次

关于移除一个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次!!!作为一个有良知的中国人,来和我和许多爱国人士一起并肩战斗吧!! 请把此文贴到一切可能的地方,你一定会为你的所作所为而自豪