62,614
社区成员
发帖
与我相关
我的任务
分享
static List remDup(List<String> list)
static List remDup(List<Integer> list)
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
class Main {
static <T> List<T> remDup(List<T> list) {
for (T item : list) {
System.out.println(item);
}
return list;
}
public static void main(String[] args) {
List<Integer> listInt = new ArrayList<>(Arrays.asList(1, 6, 3, 89, 5));
remDup(listInt);
List<String> listStr = new ArrayList<>(Arrays.asList("one", "two", "four"));
remDup(listStr);
}
}
泛型解决。
static <E> List<E> remDup(List<E> list) {
for (E e : list) {
if (e instanceof Integer) {
//TODO
} else if (e instanceof String) {
//TODO
}
}
return null;
}
}
static List remDup(List<String> list)
返回值是坯型,整个的泛型使用也就没什么意义了
解决方案的话,可以:
static List<String> remDupString(List<String> list)
static List<Integer> remDupInteger(List<Integer> list)
如果是所有类型通用的功能,可以
static <E> List<E> remDupString(List<E> list)
如果是某种类型通用的功能,可以用接口或者通用父类型来限定范围,比如,如果必须是 Comparable 的:
static <E extends Comparable<E>> List<E> remDupString(List<E> list)
那么方法内用 E 来声明的变量就可以调用 compareTo 方法
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* Created by puruidong on 2015/4/2.
*/
public class TestDemo {
public static void main(String[] args) {
//记住下面这个一定要用Integer,而不能用int,否则下面判断不了!!!
/*Java 1.8 Version */
//List<Integer>
parse(Arrays.asList(new Integer [] {1,2,3,4,5,6,7,8,9,10})).forEach(System.out::println);
//List<String>
parse(Arrays.asList(new String [] {"12","2","3"})).forEach(System.out::println);
/*Java 1.8 Version end. */
/*----------------------------------------------------*/
/*Java 1.7 Version */
//List<Integer>
List<?> lists = parse(Arrays.asList(new Integer [] {1,2,3,4,5,6,7,8,9,10}));
//List<String>
//List<?> lists = parse(Arrays.asList(new String [] {"12","2","3"}));
for (Object os :lists){
System.out.println(os);
}
/*Java 1.7 Version end */
}
private static List<? extends Object> parse(List<? extends Object> list){
if(list.size()==0){
return null;
}
/**/
List<Object> result = null ;
//处理String.
if(list.get(0) instanceof String){
//如果是String则增加一个Hello World到末尾.
result = new ArrayList<>(list);
result.add("hello world");
}else if (list.get(0) instanceof Integer){
//处理Integer
result = new ArrayList<>(list);
result.add(5000000);
/*
* 处理更多的思路是:使用下面的循环遍历出里面的值强转为int.即可.
for (Object os:list){
int rs = (int)os;//或者使用int rs = Integer.valueOf(os.toString());
//其他操作,不要在这里将修改后的值赋给list,否则报错.
}
*/
}
return result ;
}
}