迭代整数树集并将值从next()存储到Integer变量

时间:2012-04-13 23:33:27

标签: java iterator integer treeset

为了简单起见,我删除了我的程序,但是有必要将next()的值存储在变量中,因为我在迭代器循环中还有其他事情可以检查某些内容的值。但是我在存储该值时遇到了问题,我收到一条错误说“不兼容的类型”。

import java.util.*;

public class test
{
    public static void main (String [] args)
    {
        String data="34 23 13 5 2 6 9 11";
        Scanner input=new Scanner(data);
        TreeSet set=new TreeSet();
        while (input.hasNextInt())
        {
            Integer num=new Integer(input.nextInt());
            set.add(num);
        }
        Iterator itr=set.iterator();
        while (itr.hasNext())
        {
            Integer num2=itr.next();
        }
    }
}

4 个答案:

答案 0 :(得分:4)

您应该使用:

TreeSet<Integer> set = new TreeSet<Integer();

一旦你有了,那么当你添加时,你不需要实例化Integer,你可以这样做:

set.add(input.nextInt());

感谢自动装箱。

然后当你最后迭代时,你可以这样做:

for (Integer num2 : set) {
}

答案 1 :(得分:1)

中存在编译错误
  

整数num2 = itr.next();

因为Iterator类的下一个方法返回的Object等同于Integer类型。 Integer属于Object类型,但Object不属于Integer类型。因此,Object类型无法转换为Integer类型,因为Object是Java中所有类的超类。 这里,类型不兼容/彼此不匹配。您可以将Object类型转换为String,然后将String转换为Integer,或者只需将Object转换为Integer。

  

整数num2 = Integer.parseInt(itr.next()。toString());

     

整数num2 = Integer.valueOf(itr.next()。toString());

     

整数num2 =(整数)itr.next();

答案 2 :(得分:0)

您必须将其强制转换为Integer类型对象

    Integer num2= (Integer) itr.next();

答案 3 :(得分:0)

一个简单的演员应该做的伎俩

            Integer num2=(Integer) itr.next();
            System.out.println(num2);

问候,Erwald