java - 将集合中的泛型类型与同一类型 java 进行比较

标签 java generics collections

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = Integer.parseInt(scanner.nextLine());
        Box<String> box = null;
        List<Box> boxes = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            box = new Box<>(scanner.nextLine());
            boxes.add(box);
        }
        box = new Box<>(scanner.nextLine());
        Box.count(boxes, box);
    }

我在这里创建盒子并将它们传递给盒子类中的静态方法

public class Box<T> {
    private T name;

    public Box(T name) {
        this.name = name;
    }

    public static <E> int count(List<E> list, E compeer) {
        int counter = 0;
        for (E el : list) {
            if (el.compearTo(compeer) < 0) { // ofc it doesnt works compearTo is red caus i am not extending Comperable
                counter++;
            }
        }
        return counter;
    }
}

在框计数方法中,我必须计算有多少元素“低于”该方法的第二个参数,但我无法比较其中的任何内容...我知道通用类型必须扩展 Comperable <E extends Comparable>为此,如果我输入 <E extends Comparable>在我的 Box.count方法然后我不能传递参数。

最佳答案

but if I type <E extends Comparable> in my Box.count method then i cant pass the arguments.

不能传递参数的原因是因为Box不执行Comparable .

您应该做的是在 Box 中添加通用约束类:

class Box<T extends Comparable<T>> { ... }

此外,您的 count方法有点通用。如果 compeer 可能更有意义的类型更改为 Box<T>listList<Box<T>> .

方法签名现在看起来像这样:

public static <T extends Comparable<T>> int count(List<Box<T>> list, Box<T> compeer) {

你可以像这样实现这个方法:

return (int)list.stream().
    filter(x -> x.name.compareTo(compeer.name) < 0).count();

关于java - 将集合中的泛型类型与同一类型 java 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44195142/

相关文章:

java - 如何使用 Java 发送 M-SEARCH 查询

java - 从操作系统获取事件

java - 如何在 Java 中的列表上获得反向 ListView ?

.net - 如何以相反的顺序迭代 .Net IList 集合?

java - 为此创建 TreeSet 或任何集合的副本

java - 为什么在我使用迭代器时类 HashSet<T> 的值已经排序?

java - new Thread(Runnable runnableObj) 与 new Thread(Runnable runnableObj) 对比扩展线程

c# - C# 4.0 中的命名参数和泛型类型推断

java - 如何减少泛型<?将 Type> 扩展为 Java 中的 Type。代码在运行时有效但无法编译

c# - 将类型传递给未知的类库泛型方法 - 为什么它有效