【Java】数组去重
//方法一:通过list去重
public static void testA(String [] arrStr) {
List<String> list = new ArrayList<String>();
for (int i=0; i<arrStr.length; i++) {
if(!list.contains(arrStr[i])) {
list.add(arrStr[i]);
}
}
//返回一个包含所有对象的指定类型的数组
String[] newArrStr = list.toArray(new String[1]);
System.out.println(Arrays.toString(newArrStr));
}
//方法二:通过map去重
public static void testB(String [] arrStr) {
Map<String, Object> map = new HashMap<String, Object>();
for (String str : arrStr) {
map.put(str, str);
}
//返回一个包含所有对象的指定类型的数组
String[] newArrStr = map.keySet().toArray(new String[1]);
System.out.println(Arrays.toString(newArrStr));
}
这里的用new String[0]只是为了指定函数的形参数,最终返回的String[]的长度是由你的list存储内容的长度决定了。
new String[0]就是起一个模板的作用,指定了返回数组的类型,0是为了节省空间,因为它只是为了说明返回的类型
ArrayList.toArray()需要返回String [] “串对象数组” 类型,
要求调用参数也必须是 “串对象数组”,
new String[] 就是生生一个“串对象数组”,[0]表示元素个数为零。
只是 一个类型标示,用来告诉toArray方法具体转化成什么类型。
list.toArray(new String[0]);//转化成String数组
list.toArray(new int[0]);//转化成int数组