2016-02-28 41 views
1

我正在使用TreeMap添加类型为<Integer,Long>的条目。但是,我可能会遇到类型为<Long, Long>的情况,并且我想构造一个可以处理这两种情况的TreeMap。到目前为止,我有带有通用键类型的TreeMap

public class myClass { 
    public TreeMap<Integer, String> myClass(String fileToRead) { 
     .... 
     TreeMap<Integer, String> map = new TreeMap<>();  
     map.put(Integer, String); //this is a for loop that iterates through input list 
    } 
    return map 
} 

如何添加可以是整型或长整型的通用键K?

编辑:我想包括其他类型,比如BigInteger的

+0

通过'你'的意思是'整数'?因为没有'Int'这样的东西。 – Guy

+0

是的,我纠正了它。 – user20150316

+0

你能告诉我们你打算如何使用这个类,关于这两种类型? –

回答

0

听起来像是你可能要像

public class MyClass<T extends Number> { 
    public TreeMap<T, String> myClass(String fileToRead) { 
    ... 
} 

BigInteger也将填补Number法案。

但是为了避免与泛型的并发症,我实际上建议始终使用Long作为关键类型,或者甚至BigInteger,除非您有强烈的要求不这样做。根据您使用的JVM(64位),对象的Integer甚至可能不会使用比对象更少的空间。

0

您可以随时与instanceof运营商检查ReferenceType和相应的工作:

if (obj instanceof Long) { ... } 
if (obj instanceof Integer) { ... } 

JLS

关系表达instanceof参考类型

在运行时,如果RelationalExpression的值不是null并且该引用可以在不提高ClassCastException的情况下将其转换(第15.16节)至ReferenceType,则0123'运算符的结果为true。否则结果是false

1

超型两者的是号码,以便您可以使用此

+0

如果您使用1的密钥然后是1L的密钥输入值,会发生什么情况?这是可取的吗? – Raedwald

+0

之后,你有两个键 - 整数(1)和长(1),如果它是你想要取决于要解决的问题 –

相关问题