我有像这样的数组列表
ArrayList list = new ArrayList();
list.add("somethingold");
list.add(3);
list.add("somethingnew");
list.add(5);
现在,如果我打印列表输出将是:
[somethingold, 3, somethingnew, 5 ]
这里我只想获取整数元素。
我希望输出像,如果它是一个整数把它放在其他列表中,否则在另一个列表中。
这就是我想要的:
[3,5]
[somethingold, somethingnew]
答案 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)));