日期:2014-05-20  浏览次数:20681 次

怎么查看,一个list中有几个指定的类对象?
声明了一个list
里面封装了很多数据.
想在想查看这个list有多少条数据.
还向知道这个list中有多少个指定类的对象,封装了多少个在这个list中

------解决方案--------------------
List<Object> list = new ArrayList<Object>();
list.add(xxx);

for (int i = 0; i < list.size(); i++) {
if (list.get(i) instanceof xxx) {
//多少数据是list.size()
//对象的话就instanceof
}
}


------解决方案--------------------
封装?是保存数据吧?
for example
Java code
int recordCount = list.size();
int objCount = 0;
for (int i=0; i<list.size(); i++) {
    Object obj = list.get(i);
    if (obj != 0 && obj.getClass() == SomeClass.class) { //如果子类也需要计算的话,用 obj instanceOf SomeClass
        objCount;
    }
}
System.out.printf("有%d条记录, 有%d个指定类对象\n", recordCount, objCount);

------解决方案--------------------
List看看有没有泛型的信息,如果有就很容易了,直接list.size()就可以看到List里面有多少数据
如果没有泛型信息,那么就得遍历list然后逐个计数了,利用instanceof判定
Java code

import java.util.ArrayList;
import java.util.List;

/**
 * Created by IntelliJ IDEA.
 * User: Administrator
 * Date: 2011-9-22
 * Time: 20:50:57
 * To change this template use File | Settings | File Templates.
 */
public class ListDemo {

    public static void main(String[] args){
        List list=new ArrayList();
        list.add("abc");
        list.add("cde");
        list.add("fgh");
        list.add(1);
        list.add(2);
        list.add(4);
        list.add(true);
        list.add(false);

        int stringNum=0;
        int booleanNum=0;
        int intNum=0;
        for(Object o:list){
            if(o instanceof String){
                 stringNum++;
            }
            if(o instanceof Boolean){
                 booleanNum++;
            }
            if(o instanceof Integer){
                 intNum++;
            }
        }
        System.out.println("String元素数目"+stringNum);
        System.out.println("boolean元素数目"+booleanNum);
        System.out.println("int元素数目"+intNum);
        System.out.println("总共元素数目"+list.size());
    }
}