作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想知道是否有一个通用的 JAVA 函数可以将这些本质上相似的 4 个 for 循环合并到?
可选参数:
public static <E> void loopA(E... list) {
String str="";
for (E val : list) {
str+= val.toString();
}
}
数组类型E:
public static <E> void loopB(E[] list) {
String str="";
for (E val : list) {
str+= val.toString();
}
}
设置集合类型E:
public static <E> void loopC(Set<E> list) {
String str="";
for (E val : list) {
str+= val.toString();
}
}
列表集合类型E:
public static <E> void loopD(List<E> list) {
String str="";
for (E val : list) {
str+= val.toString();
}
}
将以上 4 项变成其中一项:
public static <E> void loopSigma(...){
String str="";
for (E val : list) {
str+= val.toString();
}
}
最佳答案
我会保留带有 varargs 参数的方法,并会引入带有 Collection<E>
的方法参数(将从 varargs 方法调用)。
例如:
public static <E> void loopA(E... list) {
loopSigma(Arrays.asList(list));
}
public static <E> void loopSigma(Collection<E> collection){
String str="";
for (E val : collection) {
str += val.toString();
}
}
此外,如果您使用的是 Java8,则可以重构 loopSigma()
方法体到一行:
String str = collection.stream().collect(Collectors.joining());
关于java - 一个 Java 泛型函数来合并 3 种类型的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30524005/
我是一名优秀的程序员,十分优秀!