方法一:
                if ((firstResult + maxResult) > mailList.size()) {
 qr.setResultset(mailList.subList(firstResult, mailList.size()));
 } else {
 qr.setResultset(mailList.subList(firstResult, firstResult
 + maxResult - 1));
 }
         方法二:
if ((firstResult + maxResult) > mailList.size()) { qr.setResultset(this.getMail(mailList, firstResult, mailList.size()));
} else {
qr.setResultset(this.getMail(mailList, firstResult, firstResult+maxResult-1));
}
        该类中的方法getMail代码如下:
        public List<Mail> getMail(List<Mail> mailList, int first, int end) { System.out.println("first,end"+first+","+end);
List<Mail> mail = new LinkedList<Mail>();
for (int i = first; i < end; i++) {
mail.add(mailList.get(i));
}
return mailList; }我想请问有什么区别;
List<Mail>的subList();方法返回值到底是什么,是原List<Mail>的一段地址,还是新产生的包含了List<Mail>的  first 到end的对象,

解决方案 »

  1.   

    subList
    List<E> subList(int fromIndex,int toIndex)
    返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图。(如果 fromIndex 和 toIndex 相等,则返回的列表为空)。返回的列表由此列表支持,因此返回列表中的非结构性更改将反映在此列表中,反之亦然。返回的列表支持此列表支持的所有可选列表操作。
    这是Api中说的,不是产生一个新的List对象,而是像你说的返回了一个虚的List(地址)(视图)。个人意见