java - 一个 Java 泛型函数来合并 3 种类型的循环

标签 java generics

我想知道是否有一个通用的 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/

相关文章:

java - 中介对象如何工作?它背后的想法是什么?

java - android中的内部广播

c# - 如何在 MVVM Light SimpleIoc 中注册一系列依赖项

java - 有没有一种方法可以在 Java 8+ 中指定嵌套泛型而不需要两次指定类型

generics - Kotlin 泛型类重载?

java - 为 DAG 分配优先级

java - 无法写入 JSON : failed to lazily initialize a collection of role

java - 将字符追加到数组列表中的特定位置

c# - 为不同数据库之间的共享功能创建通用/抽象 "DBContext"类

用于解码 JAXB 对象的 Java 泛型