黑马程序员技术交流社区

标题: 关于用StringBuff去除数组重复元素 [打印本页]

作者: 突然世界晴    时间: 2015-4-16 10:17
标题: 关于用StringBuff去除数组重复元素
  1. // 数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8}
  2. public class Test18 {
  3.         public static void main(String[] args) {
  4.                 int[] arr = { 4, 2, 4, 6, 1, 2, 4, 7, 8 };
  5.                 show(arr);
  6.         }

  7.         private static void show(int[] arr) {
  8.                 StringBuilder sb = new StringBuilder();
  9.                 // 将数组添加到sb对象中;
  10.                 for (int i : arr) {
  11.                         sb.append(i);
  12.                 }
  13.                 // 输出sb为424612478
  14.                 System.out.println(sb);
  15.                 int i = sb.length() - 2;
  16.                 int count = sb.length() - 1;
  17.                 // 循环判断去重复
  18.                 while (i >= 0) {
  19.                         while (count > i) {
  20.                                 if (arr[i] == arr[count])
  21.                                         sb.deleteCharAt(count);
  22.                                 count--;
  23.                         }
  24.                         i--;
  25.                         count = sb.length() - 1;
  26.                 }
  27.                 // 为什么输出42617 而不是426178
  28.                 System.out.println(sb);
  29.         }
  30. }
复制代码



作者: csu050416    时间: 2015-5-4 10:19
这是我的想法,交流一下。
import java.util.*;
class Test5
{
        public static void main(String[] args)
        {
                arrDelete();
        }
        public static void arrDelete()
        {
                int[] arr = new int[]{4,2,4,6,1,2,4,7,8};
                //定义一个集合。
                LinkedList<Integer> lis = new LinkedList<Integer>();
                lis.add(arr[0]);
                //遍历数组,将不同数组元素存入List集合。
                for(int x=1;x<arr.length;x++)
                {
                        if(lis.contains(arr[x]))
                                continue;
                        else
                                lis.add(arr[x]);               
                }
                //将集合转为数组。
                Integer[] arr1 = lis.toArray(new Integer[lis.size()]);
                //打印数组。
                System.out.print("{");
                for(int y=0;y<arr1.length-1;y++)
                        System.out.print(arr1[y]+",");
                System.out.print(arr1[arr1.length-1]+"}");
        }
}
作者: csu050416    时间: 2015-5-4 10:27
我这有个不好点:把数组定义到方法里去了。
public static void main(String[] args)
        {        
                int[] arr = new int[]{4,2,4,6,1,2,4,7,8};
                arrDelete(arr);
        }
        public static void arrDelete(int[]  arr)
        {
              




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2