A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. package com.itheima;

  2. public class Test8 {

  3.         /**8、 数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8}
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 // 测试
  8.                 int [] intArray={4,2,4,6,1,2,4,7,8};
  9.                 int count=count(intArray);
  10.                 int [] endArray=distinctArray(intArray,count);
  11.                 System.out.println("去重后的数组为:");
  12.                 for(int e:endArray){
  13.                         System.out.print(e+",");
  14.                 }

  15.         }
  16.         /**生成去重后的数组 tempArray
  17.          * @param intArray
  18.          * @param count   数组元素重复次数  定义新数组长度为原数组intArray.length-count
  19.          * @return
  20.          */
  21.         public static int[] distinctArray(int[ ] intArray,int count){
  22.                 int [ ] tempArray=new int[intArray.length-count];
  23.                 count=0;
  24.                 for(int i=0;i<intArray.length;i++){
  25.                         boolean flag =true;
  26.                         for(int j=0;j<tempArray.length;j++){
  27.                                 if(intArray[i]==tempArray[j]){
  28.                                         flag=false;
  29.                                 }
  30.                         }
  31.                         if(flag){
  32.                                 tempArray[count]=intArray[i];
  33.                                 count++;
  34.                         }
  35.                 }
  36.                 return tempArray;
  37.         }
  38.        
  39.         /**计算数组中元素重复的次数 如{4,2,4,6,1,2,4,7,8}重复次数为3
  40.          * @param intArray
  41.          * @return
  42.          */
  43.         public static int count(int[]  intArray){
  44.                 int flag =0;
  45.                 for(int i=0;i<intArray.length;i++){
  46.                         for(int j=i+1;j<intArray.length;j++){
  47.                                 if(intArray[i]==intArray[j]){
  48.                                         flag++;
  49.                                         break;
  50.                                 }
  51.                         }       
  52.                         //System.out.println("flag:"+flag)        ;
  53.                 }               
  54.                 return flag;
  55.         }

  56. }
复制代码
有没有更好的?请附上答案

2 个回复

正序浏览
提供个思路,用HashSet是不是方便多啊?
回复 使用道具 举报
  1. import java.util.*;
  2. class DereplicationDemo
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 int[] arr={4,2,4,6,1,2,4,7,8};
  7.                 printArray(arr);
  8.                 System.out.println("变化前数组长度为:"+arr.length);
  9.                 arr=dere(arr);
  10.                 printArray(arr);
  11.                 System.out.println("变化后数组长度为:"+arr.length);
  12.                

  13.                
  14.         }
  15.         public static int[] dere(int[] arr)
  16.         {
  17.                 ArrayList<Integer> a1=new ArrayList<Integer> ();
  18.                 for (int i=0;i<arr.length ; i++)
  19.                 {
  20.                         if(!a1.contains(arr[i]))
  21.                                 a1.add(arr[i]);
  22.                        
  23.                 }
  24.                 int [] in=new int[a1.size()];
  25.                 int index=0;
  26.                 Iterator<Integer> it=a1.iterator();
  27.                 while(it.hasNext())
  28.                 {
  29.                         in[index++]=it.next();
  30.                 }
  31.                 return in;
  32.         }
  33.         /*

  34.         //下面这个方法是用set集合实现。
  35.         public static int[] dere2(int[] arr)
  36.         {
  37.                 TreeSet<Integer> a1=new TreeSet<Integer>();
  38.                 for (int i=0;i<arr.length ; i++)
  39.                 {
  40.                         a1.add(arr[i]);
  41.                        
  42.                 }
  43.                 int[] in=new int[a1.size()];
  44.                 Iterator<Integer> it=a1.iterator();
  45.                 for (int i=0;i<a1.size() ; i++)
  46.                 {
  47.                         in[i]=it.next();
  48.                        
  49.                 }
  50.                 return in;
  51.         }
  52.         */
  53.         public static void printArray(int[] arr)
  54.         {
  55.                 for (int i=0;i<arr.length ; i++)
  56.                 {
  57.                         if(i==0)
  58.                                 System.out.print("["+arr[i]+", ");
  59.                         else if(i==arr.length-1)
  60.                                 System.out.println(arr[i]+"]");
  61.                         else
  62.                                 System.out.print(arr[i]+", ");

  63.                 }
  64.        
  65.         }
  66.        
  67.        
  68. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马