如何在Java中将对象转换为整数?

4

我是一位Java开发人员,我想将一个Object对象转换为一个int类型。

我使用以下代码:

   Collection c = MyHashMap.values(); 
   Object f = Collections.max(c);
   int NumOfMaxValues = Integer.parseInt(f);

但是它没有运行。它显示: 没有适合的parseInt方法。 我该如何解决这个问题?

2
f的实际类型是什么? - harold
2
首先查看 parseInt 的 Java 文档! - CoolBeans
1
你要插入什么到那个哈希映射中?是整数吗?如果是,只需使用 Collection<Integer> c = MyHashMap.values(); - Tom
你在HashMap中放置什么对象类型? - Cata
非常感谢,这真的很有帮助。Collection<Integer> c = MyHashMap.values(); - programmer
4个回答

11
Integer.parseInt()

需要一个String。您可以使用

Integer.parseInt(f.toString())

并且在你的类中重写toString()方法。


1
@程序员。很高兴能帮忙。请确保toString()方法返回一个有效的整数字符串,否则parseInt()将抛出异常。 - Luchian Grigore
我使用System.out.println(),它输出一个整数。它没有抛出任何异常,所以很好。谢谢。 - programmer
2
在编程中,你应该几乎总是使用String.valueOf(object)而不是object.toString(),因为它避免了当object为空时出现NullPointerException的情况。在这种情况下,对于null情况仍然会得到NumberFormatException,但由于已经被检查/捕获,所以比未经检查的NPE更好。 - Trevor Freeman
1
从您上面的注释来看,c是一个“Collection<Integer>”,是吗? 如果是这种情况,解析int并不是错误的,但是会浪费资源。‘f’已经是一个“Integer”,您可以将其分配给一个“int”,因为它支持自动装箱。 “Integer.parseInt(f.toString())”将把该整数作为字符串格式化,然后重新解析为整数。 - yshavit
是的,集合中的值是整数,Collection <Integer> c = MyHashMap.values();。你是对的,因为如果我这样做:Integer parseInt = (Integer) f; 它也可以工作,而不需要parseInt(f.toString()),谢谢! - programmer

2
理想情况下,您应充分利用泛型,并编写以下内容:
Map<Object,Integer> myHashMap = new HashMap<Object,Integer>();
Collection<Integer> values = myHashMap.values();
Integer value = Collections.max(values);
if (value != null)
{
  int myInt = value;
}

1

你不能仅仅将任何对象转换为整数。这应该如何运作呢?想想这样一个类:

class Car {
  public String name;
  public String owner;
}

你需要自己定义一个方法。或者你必须找出那个具体的对象是什么,以及如何进行转换。


1
Integer.parseInt(f.toString());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接