Java对象为int:更好的方法?

Jer*_*emy 7 java generics

我有一个TreeSet,它将充满整数.总而言之,我试图在列表中存储的最后一个(最大)值之后循环.我现在要做的是获取起始变量:

    Object lastObj = primes.last();
    Integer last = new Integer(lastObj.toString());
    int start = 1 + last.intValue(); // the added 1 is just for program logic
Run Code Online (Sandbox Code Playgroud)

我确信必须有更好的方法将对象(我知道永远是一个int)转换为int'start'.有人知道更好的方法吗?

jbm*_*jbm 8

在J2SE 5或更高版本中,它会自动发生,具有"自动装箱"功能.

int start = 1 + last;
Run Code Online (Sandbox Code Playgroud)

http://docs.oracle.com/javase/1.5.0/docs/guide/language/autoboxing.html

此外,如果您知道它们都将是Integer对象,请使用参数化类型:

List<Integer> obj = new ArrayList<Integer>()...
Run Code Online (Sandbox Code Playgroud)

然后将其与自动装箱功能结合使用:

int start = 1 + obj.last();
Run Code Online (Sandbox Code Playgroud)

  • 我对自动装箱的唯一反对意见是你"看似"使用整数,所以你做一个==比较,这是一个参考比较,而不是预期的价值比较. (2认同)

Vin*_*nie 8

您使用的是Java 1.6版吗?在这种情况下,您可以利用autoboxing和泛型来清理代码.

首先,可以将TreeSet声明为仅包含Integer对象

TreeSet<Integer> primes;
Run Code Online (Sandbox Code Playgroud)

现在可以从集合中获取对象

Integer last = primes.last();
Run Code Online (Sandbox Code Playgroud)

并使用您获得的自动装箱功能

int start = 1 + last;
Run Code Online (Sandbox Code Playgroud)

  • 你可以这么做,int start = 1 + primes.last(); (6认同)