1.数组去重 用list 或者直接hashset 不重复的特性
2. 值得注意的是 list.toarry(String[]),用这个带参数的方法比较方便,如果不带参数 容易报错。
public class arrays {
public static void main(String[] args) {
String[] arr= {"ali","baidu","zj","whx","ali","lmx","zj","jxp","whx","wxc","wxc"};
String[] sl =arrays.arrDeleteOne(arr);
System.out.println("数组去重之 利用 list");
for (String string : sl) {
System.out.printf(string+" ");
}
System.out.println(" ");
String[] s2 =arrays.arrDeleteTwo(arr);
System.out.println("数组去重之 利用 set");
for (String string : s2) {
System.out.printf(string+" ");
}
}
/*
* @me 数组去重 -list
*/
public static String[] arrDeleteOne(String [] arr) {
ArrayList<String> list = new ArrayList<String>();
String[] newarray = new String[list.size()];
for (String ar : arr) {
if(!list.contains(ar)) {
list.add(ar);
}
}
return list.toArray(newarray);
}
/*
* @me 数组去重 -set
*/
public static String[] arrDeleteTwo(String [] arr) {
HashSet<String> set = new HashSet<String>();
ArrayList<String> list = new ArrayList<String>();
String[] newarray = new String[list.size()];
for (String ar : arr) {
set.add(ar);
}
return set.toArray(newarray);
}
// /*
// * @me 数组去重 - 用一个数组 这个方法暂时行不通
// */
// public static String[] arrDeleteThree(String [] arr) {
// for (int i=0; i< arr.length; i++) {
// if(arr[i] == null) {
// break;
// }
// for(int j = i+1;j <arr.length; j++) {
// if(arr[i] == arr[j]) { // 相等统一往前挪一位
// for(int k= j;k <arr.length-1; k++) {
// arr[k] = arr[k+1];
// }
// arr[arr.length -1] = null;
// i--;
// break;
// }
// }
//
// }
// return arr;
//}
}