创建一个通用方法 Print,它将接受所有类型的集合

Create a generic method Print which will accept all type of collections to It

为什么地图的打印方法不起作用? 该方法应该接受所有泛型并打印它们。 它适用于列表、集合、队列但问题出现在映射中。

public class Question6 {

    @SuppressWarnings("unchecked")
    static void print(@SuppressWarnings("rawtypes") Collection c) {
        System.out.println(c.getClass());
        c.forEach(System.out::println);
        System.out.println();
    }
    
    public static void main(String[] args) {
        List<Integer> l = new ArrayList<>();
        l.add(1);
        l.add(2);
        print(l);
            
        List<Dummy> ld = new ArrayList<Dummy>();
        ld.add(new Dummy());
        print(ld);

        Map<Integer,Integer> m = new LinkedHashMap<Integer, Integer>();
        m.put(1,1);
        print(m); // gives error?
                
    }
}

class Dummy{
    
}

Map 不是 Collection。您可以这样调用 print 方法:

print(map.entrySet());
// or 
print(map.keys());
// or
print(map.values());

重载如下:

static void print(Collection<?> c) {
    System.out.println(c.getClass());
    c.forEach(System.out::println);
    System.out.println();
}

static void print(Map<?, ?> map) {
    System.out.println(map.getClass());
    map.entrySet().forEach(System.out::println);
    System.out.println();
}