如何区分ArrayList中的String和Integer?

时间:2013-07-31 10:10:49

标签: java string arraylist integer

我有像这样的数组列表

ArrayList list = new ArrayList();
list.add("somethingold");
list.add(3);
list.add("somethingnew");
list.add(5);

现在,如果我打印列表输出将是:

[somethingold, 3, somethingnew, 5 ]

这里我只想获取整数元素。

我希望输出像,如果它是一个整数把它放在其他列表中,否则在另一个列表中。

这就是我想要的:

[3,5]
[somethingold, somethingnew]

9 个答案:

答案 0 :(得分:4)

你试过这个吗?:

if(list.get(0) instanceof Integer) {
    // is an integer
} else if (list.get(0) instanceof String) {
    // is a String
}

循环遍历List

中的每个元素

for循环:

for (int i = 0; i < list.size(); i++) {
   if (list.get(i) instanceof Integer) {
      // do your stuff
   }
   if (list.get(i) instanceof String) {
      // do your stuff
   }
}

for-each循环:

for (Object obj: list) {
   if (obj instanceof Integer) {
      // do your stuff
   }
   ...
}

答案 1 :(得分:1)

您可以使用instanceof运算符来实现它。

        for (Object object : list) 
        {
            if(object instanceof Integer)
            {
                System.out.println(object); // Integer
            }
            else if(object instanceof String)
            {
                System.out.println(object); // String
            }
        }

答案 2 :(得分:0)

非常简单。只需两行代码

string[] stringList = list.OfType<string>().ToArray();
 Int32[] intList = list.OfType<Int32>().ToArray();

答案 3 :(得分:0)

如果您使用的是java 1.5 +,建议您应创建类似List<Integer>List<String>的类型。

如果是通用数组,您可以使用instanceOf运算符来区分。

for(Object obj: list){
   if(obj instanceOf Ineteger){
       ...
   }else if(obj instanceOf String){
       ...
   }
}

答案 4 :(得分:0)

您必须使用 for-loop 来获取对象列表,因为您可以找到字符串和整数。

下面的示例显示了如何获取值..

ArrayList list = new ArrayList();
for (Object o : list) {
    if (o.getClass().equals(Integer.TYPE)) {
       ...
    }
    else if (o.getClass().equals(String.class)) {
       ...
    }
}

答案 5 :(得分:0)

您正在尝试浏览JDK API,这是为什么在Java中引入Generics的最重要原因之一,为您提供类型安全的集合。

添加或获取元素时无需担心(不需要明确的类型转换)。

这本书提出了一个友好的建议。

由于

答案 6 :(得分:0)

您希望[3,5] [somethingold, somethingnew]看起来像2个单独的列表。

所以你可以做到

class IntegersAndStrings {
    private final List<String> strings = new ArrayList<String>();
    private final List<Integer> ints = new ArrayList<Integer>();

    public void add(int i) {
        ints.add(Integer.valueOf(i));
    }

    public void add(String s) {
        strings.add(s);
    }

    @Override
    public String toString() {
        return ints.toString() + strings.toString();
    }
}

并像以前一样使用

class Main {
    public static void main(String[] args) {
        IntegersAndStrings list = new IntegersAndStrings();
        list.add("somethingold");
        list.add(3);
        list.add("somethingnew");
        list.add(5);
        System.out.println(list);
    }
}

,输出为

[3, 5][somethingold, somethingnew]

答案 7 :(得分:0)

Collections.sort(list);
int index = 0;
for (Object obj: list) {
  index ++;
  if (obj instanceof String) {
     break;
}
}

List<Integer> integerList = list.subList(0.index);
List<String> stringList = list.subList(index,list.size());

System.out.println(integerList);
System.out.println(stringList);

试试这个,我希望它有效

答案 8 :(得分:0)

使用guava库你可以这样做:

System.out.println(
     Iterators.toString(Iterators.filter(list.iterator(), String.class)));
System.out.println(
     Iterators.toString(Iterators.filter(list.iterator(), Integer.class)));