黑马程序员技术交流社区
标题:
数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},请赐教
[打印本页]
作者:
Larno
时间:
2014-11-6 15:11
标题:
数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},请赐教
package com.itheima;
public class Test8 {
/**8、 数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8}
* @param args
*/
public static void main(String[] args) {
// 测试
int [] intArray={4,2,4,6,1,2,4,7,8};
int count=count(intArray);
int [] endArray=distinctArray(intArray,count);
System.out.println("去重后的数组为:");
for(int e:endArray){
System.out.print(e+",");
}
}
/**生成去重后的数组 tempArray
* @param intArray
* @param count 数组元素重复次数 定义新数组长度为原数组intArray.length-count
* @return
*/
public static int[] distinctArray(int[ ] intArray,int count){
int [ ] tempArray=new int[intArray.length-count];
count=0;
for(int i=0;i<intArray.length;i++){
boolean flag =true;
for(int j=0;j<tempArray.length;j++){
if(intArray[i]==tempArray[j]){
flag=false;
}
}
if(flag){
tempArray[count]=intArray[i];
count++;
}
}
return tempArray;
}
/**计算数组中元素重复的次数 如{4,2,4,6,1,2,4,7,8}重复次数为3
* @param intArray
* @return
*/
public static int count(int[] intArray){
int flag =0;
for(int i=0;i<intArray.length;i++){
for(int j=i+1;j<intArray.length;j++){
if(intArray[i]==intArray[j]){
flag++;
break;
}
}
//System.out.println("flag:"+flag) ;
}
return flag;
}
}
复制代码
有没有更好的?请附上答案
作者:
李天富
时间:
2014-11-6 19:00
import java.util.*;
class DereplicationDemo
{
public static void main(String[] args)
{
int[] arr={4,2,4,6,1,2,4,7,8};
printArray(arr);
System.out.println("变化前数组长度为:"+arr.length);
arr=dere(arr);
printArray(arr);
System.out.println("变化后数组长度为:"+arr.length);
}
public static int[] dere(int[] arr)
{
ArrayList<Integer> a1=new ArrayList<Integer> ();
for (int i=0;i<arr.length ; i++)
{
if(!a1.contains(arr[i]))
a1.add(arr[i]);
}
int [] in=new int[a1.size()];
int index=0;
Iterator<Integer> it=a1.iterator();
while(it.hasNext())
{
in[index++]=it.next();
}
return in;
}
/*
//下面这个方法是用set集合实现。
public static int[] dere2(int[] arr)
{
TreeSet<Integer> a1=new TreeSet<Integer>();
for (int i=0;i<arr.length ; i++)
{
a1.add(arr[i]);
}
int[] in=new int[a1.size()];
Iterator<Integer> it=a1.iterator();
for (int i=0;i<a1.size() ; i++)
{
in[i]=it.next();
}
return in;
}
*/
public static void printArray(int[] arr)
{
for (int i=0;i<arr.length ; i++)
{
if(i==0)
System.out.print("["+arr[i]+", ");
else if(i==arr.length-1)
System.out.println(arr[i]+"]");
else
System.out.print(arr[i]+", ");
}
}
}
复制代码
作者:
jacoblx
时间:
2014-11-6 19:03
提供个思路,用HashSet是不是方便多啊?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2