转自CSDN:
1、背景
根据不同的业务逻辑,经常会遇到数组中存在多个重复元素的场合,总结了下数组的排序,留个记录。
2、实现方法
总结了四种方法,接下来进行展示
1、方法一
//数组去重方法一 String[] array = {"a","b","c","c","d","e","e","e","a"}; List<String> result = new ArrayList<>(); boolean flag; for(int i=0;i<array.length;i++){ flag = false; for(int j=0;j<result.size();j++){ if(array[i].equals(result.get(j))){ flag = true; break; } } if(!flag){ result.add(array[i]); } } String[] arrayResult = (String[]) result.toArray(new String[result.size()]); System.out.println(Arrays.toString(arrayResult));
先遍历原数组,然后遍历结束集,通过每个数组的元素和结果集中的元素进行比对,若相同则break。若不相同,则存入结果集。
两层循环进行遍历得出最终结果。
2、方法二
//数组去重方法二 String[] array = {"a","b","c","c","d","e","e","e","a"}; List<String> list = new ArrayList<>(); list.add(array[0]); for(int i=1;i<array.length;i++){ if(list.toString().indexOf(array[i]) == -1){ list.add(array[i]); } } String[] arrayResult = (String[]) list.toArray(new String[list.size()]); System.out.println(Arrays.toString(arrayResult));
通过使用indexOf方法进行判断结果集中是否存在了数组元素。
3、方法三
//数组去重方法三 String[] array = {"a","b","c","c","d","e","e","e","a"}; List<String> list = new ArrayList<>(); for(int i=0;i<array.length;i++){ for(int j=i+1;j<array.length;j++){ if(array[i] == array[j]){ j = ++i; } } list.add(array[i]); } String[] arrayResult = (String[]) list.toArray(new String[list.size()]); System.out.println(Arrays.toString(arrayResult));
嵌套循环,进行比较获取满足条件结果集。
4、方法四
//数组去重方法四 String[] array = {"a","b","c","c","d","e","e","e","a"}; Arrays.sort(array); List<String> list = new ArrayList<>(); list.add(array[0]); for(int i=1;i<array.length;i++){ if(!array[i].equals(list.get(list.size()-1))){ list.add(array[i]); } } <pre name="code" class="java"><span style="white-space:pre"> </span>String[] arrayResult = (String[]) list.toArray(new String[list.size()]);
System.out.println(Arrays.toString(arrayResult));
先使用java提供的数组排序方法进行排序,然后进行一层for循环,进行相邻数据的比较即可获得最终结果集。
5、方法五
//数组去重方法五 String[] array = {"a","b","c","c","d","e","e","e","a"}; Set<String> set = new HashSet<>(); for(int i=0;i<array.length;i++){ set.add(array[i]); } String[] arrayResult = (String[]) set.toArray(new String[set.size()]); System.out.println(Arrays.toString(arrayResult));
String[] arrayResult = (String[]) list.toArray(new String[list.size()]);
System.out.println(Arrays.toString(arrayResult));
原文地址:http://blog.csdn.net/wenxuechaozhe/article/details/52083936