java 将不同的数据库放入字典中

vwhgwdsa  于 2023-10-14  发布在  Java
关注(0)|答案(1)|浏览(101)

验证码:

Dictionary<String, Integer> dict = new Hashtable<>();
dict.put(record);

如果你已经定义了字典的数据类型,是否可以在字典中放入另一个数据类型?例如,我想输入一个数据类型为Data的记录。

js81xvg6

js81xvg61#

子类型,不是不同类型

如果你已经定义了字典的数据类型,是否可以在字典中放入另一个数据类型?

你可以放入 * 子类型 *,但不能放入完全不同的类型。Java Generics的目的是使编译器能够阻止您使用不同的类型。
如果你定义Map来保存String类型的键,这些键会导致Integer类型的值,那么:

  • 你输入到Map中的每个键必须是String对象本身,或者是String的子类。

String类是final,所以不存在`String的子类。

  • 你输入到Map中的每个值必须是Integer对象本身,或者是Integer的子类。

Integer类是final,所以不存在Integer的子类。
假设我们用更一般的类型CharSequenceNumber定义了你的map。然后我们可以添加条目,其中键是CharSequence接口的任何实现,例如StringStringBuilder。我们可以添加值为Number的任何子类的条目,例如IntegerDouble

Map < CharSequence, Number > map =
        Map.of (
                "Alice" , Integer.valueOf ( 42 ) ,                       // String , Integer
                new StringBuilder ( "Bob" ) , Double.valueOf ( "7.8" )   // StringBuilder , Double
        );

记录

如果您想使用records替换String-> Integer配对,则不需要Map。只需使用任何SetList实现来收集记录类型的对象。

record CatsPerPerson ( String name , int countOfCats ) {}
List< CatsPerPerson > list = 
    List.of (
        new CatsPerPerson ( "Alice" , 2 ) ,
        new CatsPerPerson ( "Bob" , 0 ) ,
        new CatsPerPerson ( "Paula Poundstone" , 12 ) 
    );

相关问题