2

我有这样的数组列表

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

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

[somethingold, 3, somethingnew, 5 ]

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

我想要这样的输出,如果它是一个整数,则将其放入其他列表中,否则放入另一个列表中。

这就是我要的:

[3,5]
[somethingold, somethingnew]
4

9 回答 9

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 (Object obj: list) {
   if (obj instanceof Integer) {
      // do your stuff
   }
   ...
}
于 2013-07-31T10:12:35.027 回答
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
            }
        }
于 2013-07-31T10:14:29.930 回答
0

它非常简单。只需两行代码

string[] stringList = list.OfType<string>().ToArray();
 Int32[] intList = list.OfType<Int32>().ToArray();
于 2013-07-31T10:15:21.010 回答
0

建议应该创建类型化的集合,List<Integer>或者List<String>如果您使用的是 java 1.5+。

在泛型数组的情况下,您可以使用 instanceOf 运算符来区分。

for(Object obj: list){
   if(obj instanceOf Ineteger){
       ...
   }else if(obj instanceOf String){
       ...
   }
}
于 2013-07-31T10:15:27.773 回答
0

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

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

ArrayList list = new ArrayList();
for (Object o : list) {
    if (o.getClass().equals(Integer.TYPE)) {
       ...
    }
    else if (o.getClass().equals(String.class)) {
       ...
    }
}
于 2013-07-31T10:15:37.947 回答
0

您正在尝试查看 JDK API,这是在 java 中引入泛型的最重要原因之一,以便为您提供类型安全的集合。

在添加或获取元素时您无需担心(无需显式类型转换)。

一个友好的建议。

谢谢

于 2013-07-31T10:19:07.707 回答
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]
于 2013-07-31T10:21:12.543 回答
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);

试试这个,我希望它有效

于 2013-07-31T10:25:53.613 回答
0

使用番石榴库,你可以这样做:

System.out.println(
     Iterators.toString(Iterators.filter(list.iterator(), String.class)));
System.out.println(
     Iterators.toString(Iterators.filter(list.iterator(), Integer.class)));
于 2013-07-31T11:09:56.893 回答