怎么遍历list 就怎么遍历 userList
那样得不到userList的属性
和方法
@丨akun丨:
你说的是得不到User 的属性吧 ,你把遍历到的userList对象 如: userList[0] 转换为User对象就好了
c# 中可以这样 :
User user = (User)userList[0] ;
再去访问user对象中的属性
或者 这样访问
((User)userList[0] ) .Name
1 User user = (User)userList[0]; 2 3 string name = ((User)userList[0]).Name;
@xiaoxiao刀: 是可以的,但是我怎么把 (User)userList[0] ;中的(User)传过去呢?而且与集合一一对应,我这边不止这两个model,总共十几个
@丨akun丨:
不知道你这边的具体需求是什么样的,
如果在函数中你不知道对象是哪种类型的话
可以
Type type = userList[0].GetType(); if(type is User) { User user = (type)userList[0]; }
@丨akun丨:
不过这样做,可能效率会很低, 你把你逻辑需求贴出来,这种多维数组的方式,是不推荐这么用的,得视情况而定
@xiaoxiao刀: 我这边是做报表,一个报表了包含了十几个小表,也就是说我需要从十几个model里取数据,而数据处理与报表导出是在两个方法里,所以只能把十几个model放到一个集合里,再把这个集合传到报表导出的方法里。
@丨akun丨:
你报表导出的方法不能改是么,既然数据量这么大,肯定是把多个表分步加载呀,没必要一次性都弄出来呀,另外你用的是ORM?
@xiaoxiao刀: 怎么分步加载呢?我用的是POI,报表是导出excel
@丨akun丨:
额... 如果只是从数据库导出数据到execl 你可先导一个表 ,然后重复这个过程,不久很简单嘛
@xiaoxiao刀: 你想的简单啦,后面的回将前面的覆盖掉。。。
@丨akun丨:
不会呀 之前我用c#做过导出到excel 的demo 操作excel的时候 有参数可以输入从第几行插入 你不要选择已经插入数据的行就可以了呀
再说了可以把表导入不同 sheet中也可以呀
@xiaoxiao刀:你给了我一个很好的思路,搞定了,谢谢哈。
foreach(var n in list.userlist){}
foreach(var m in list.dpList){}
这是什么东西?为啥还有var?
for(int i=0;i<list.size();i++){
List l = list.get(i);
for(Object o:l){
if(o instanceof User){
User user = (User) o;
System.out.println(user);
}
if(o instanceof Department){
Department dep = (Department) o;
System.out.println(dep);
}
}
}
这跟楼上讲的差不多,我按楼上的思路写出来了,嘿嘿
你可以把两个list放在map里,不一定要放在list里,传一个map就好了...
1 public class MyTests 2 { 3 public static void main(String[] args) 4 { 5 List<List<Reportable>> reportables = new ArrayList<List<Reportable>>(); 6 7 List<Reportable> users = new ArrayList<Reportable>(); 8 users.add(new User()); 9 users.add(new User()); 10 users.add(new User()); 11 12 List<Reportable> departments = new ArrayList<Reportable>(); 13 departments.add(new Department()); 14 departments.add(new Department()); 15 departments.add(new Department()); 16 17 reportables.add(users); 18 reportables.add(departments); 19 20 for (List<Reportable> reports : reportables) 21 { 22 for (Reportable element : reports) 23 { 24 element.printMe(); 25 } 26 } 27 } 28 } 29 30 interface Reportable 31 { 32 public void printMe(); 33 } 34 35 class User implements Reportable 36 { 37 @Override 38 public void printMe() 39 { 40 System.out.println("I am a user."); 41 } 42 } 43 44 class Department implements Reportable 45 { 46 @Override 47 public void printMe() 48 { 49 System.out.println("I am a department"); 50 } 51 }