关于list.size()的问题 有了这一句时 list.size()有时会为4 不应该的啊,上面只添加进去了三个元素楼主把有时会为4,有时的那种情况多验证下,应该不会为4的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把list1和list2的声明给放到循环外,然后在main方法的最后打印一下看看呢 刚跑了几次,还专程把 System.out.println("list1.size()" + list1.size());打印了,为了看这清晰跑了有8次左右,都是3,真没出现4再说了,每次List list1=new ArrayList(); 时,list1 都指向了一个空的集合然后 到打印list1.size() 之前,都只添加了三个元素进去或许我还有考虑不周的地方吧,请楼主将为4的情况截出来看看 刚跑了几次,还专程把 System.out.println("list1.size()" + list1.size());打印了,为了看这清晰跑了有8次左右,都是3,真没出现4再说了,每次List list1=new ArrayList(); 时,list1 都指向了一个空的集合然后 到打印list1.size() 之前,都只添加了三个元素进去或许我还有考虑不周的地方吧,请楼主将为4的情况截出来看看 package testcollection;import java.util.ArrayList;import java.util.Date;import java.util.List;public class TestList { public static void main(String[] args) { int count=0; int count2=0; for(int i=1;i<=100;i++){ List list1=new ArrayList(); list1.add(134983); list1.add("fdjakadf"); list1.add(new Date()); System.out.println(list1.size());//第一次输出 list1.remove(new Date()); List list2=new ArrayList(); list2.add("djfdj"); list2.add("dfjh"); list2.add(342234); list2.add(new Date()); list2.add("dsfak"); list2.add(new Dog()); list1.add(list2); System.out.println(list1.size());//第二次输出 if(list1.size()==3){ count++; } if(list1.size()==4){ count2++; } } System.out.println(count); System.out.println(count2); }}class Dog{ }我又加了个输出语句 按说第一次 第二次 都是3 没有4但是....、最后count 和count2 的 次数 List list1=new ArrayList();list1.add(134983);list1.add("fdjakadf");list1.add(new Date()); // 添加了new DateSystem.out.println(list1.size());//第一次输出list1.remove(new Date()); // 移除了new Datelist1.add(list2); // 再添加list2 这里的new Date() 是对象,在内存空间中我测了很多次,都是3,没有出现4其实问题就出在new Date 上,为4的时候,remove的new Date 不是add 的那个new Date 所以,remove 根本就没有删除掉任何东西,所以此时list1的size 依然是3,再添加list2 就是4了还为3的情况,remove掉的是add的那个new Date,导致list1的size为2再添加list2 为3Date 类的equals 方法,比较的是getTime()的值public boolean equals(Object obj) { return obj instanceof Date && getTime() == ((Date) obj).getTime(); }瞬时的两个new Date ,java会认为他们是相同的对象给list1.remove(new Date()); 前添加一行 Thread.sleep(100);这时,remove里面的对象便不再是之前add的对象,这样每次的list1.size 都是4了 刚跑了几次,还专程把 System.out.println("list1.size()" + list1.size());打印了,为了看这清晰跑了有8次左右,都是3,真没出现4再说了,每次List list1=new ArrayList(); 时,list1 都指向了一个空的集合然后 到打印list1.size() 之前,都只添加了三个元素进去或许我还有考虑不周的地方吧,请楼主将为4的情况截出来看看 package testcollection;import java.util.ArrayList;import java.util.Date;import java.util.List;public class TestList { public static void main(String[] args) { int count=0; int count2=0; for(int i=1;i<=100;i++){ List list1=new ArrayList(); list1.add(134983); list1.add("fdjakadf"); list1.add(new Date()); System.out.println(list1.size());//第一次输出 list1.remove(new Date()); List list2=new ArrayList(); list2.add("djfdj"); list2.add("dfjh"); list2.add(342234); list2.add(new Date()); list2.add("dsfak"); list2.add(new Dog()); list1.add(list2); System.out.println(list1.size());//第二次输出 if(list1.size()==3){ count++; } if(list1.size()==4){ count2++; } } System.out.println(count); System.out.println(count2); }}class Dog{ }我又加了个输出语句 按说第一次 第二次 都是3 没有4但是....、最后count 和count2 的 次数懂了 O(∩_∩)O谢谢 关于ftp上传的问题 nio 的问题 用jcreator出现了搞不懂的问题!! 「50分求助贴」web.xml不能更改。 ==========请大家帮忙...谢谢~ 读文件时如何判断是否已经读到末尾了 解决者 送分20 呵呵 不胜感激 请问《Java in a Nutshell》现在最新的版本是多少?谢谢 关于建立父目录不存在的情况下建立文件或目录的问题 菜鸟:关于StringTokenizer的应用?? 在程序中启动一个进程(不是线程),如何知道该进程已运行结束 关于继承和多态的一个疑惑,在线等 请问高手,该如编写如下程序??
跑了有8次左右,都是3,真没出现4
再说了,每次List list1=new ArrayList(); 时,list1 都指向了一个空的集合然后 到打印list1.size() 之前,都只添加了三个元素进去或许我还有考虑不周的地方吧,请楼主将为4的情况截出来看看
跑了有8次左右,都是3,真没出现4
再说了,每次List list1=new ArrayList(); 时,list1 都指向了一个空的集合然后 到打印list1.size() 之前,都只添加了三个元素进去或许我还有考虑不周的地方吧,请楼主将为4的情况截出来看看
package testcollection;import java.util.ArrayList;
import java.util.Date;
import java.util.List;public class TestList {
public static void main(String[] args) {
int count=0;
int count2=0;
for(int i=1;i<=100;i++){
List list1=new ArrayList();
list1.add(134983);
list1.add("fdjakadf");
list1.add(new Date());
System.out.println(list1.size());//第一次输出
list1.remove(new Date());
List list2=new ArrayList();
list2.add("djfdj");
list2.add("dfjh");
list2.add(342234);
list2.add(new Date());
list2.add("dsfak");
list2.add(new Dog());
list1.add(list2);
System.out.println(list1.size());//第二次输出
if(list1.size()==3){
count++;
}
if(list1.size()==4){
count2++;
}
}
System.out.println(count);
System.out.println(count2);
}
}
class Dog{
}
我又加了个输出语句 按说第一次 第二次 都是3 没有4但是....、
最后count 和count2 的 次数
list1.add(134983);
list1.add("fdjakadf");
list1.add(new Date()); // 添加了new Date
System.out.println(list1.size());//第一次输出
list1.remove(new Date()); // 移除了new Date
list1.add(list2); // 再添加list2
这里的new Date() 是对象,在内存空间中
我测了很多次,都是3,没有出现4
其实问题就出在new Date 上,为4的时候,remove的new Date 不是add 的那个new Date
所以,remove 根本就没有删除掉任何东西,所以此时list1的size 依然是3,再添加list2 就是4了
还为3的情况,remove掉的是add的那个new Date,导致list1的size为2
再添加list2 为3Date 类的equals 方法,比较的是getTime()的值
public boolean equals(Object obj) {
return obj instanceof Date && getTime() == ((Date) obj).getTime();
}
瞬时的两个new Date ,java会认为他们是相同的对象给list1.remove(new Date()); 前添加一行 Thread.sleep(100);
这时,remove里面的对象便不再是之前add的对象,这样每次的list1.size 都是4了
跑了有8次左右,都是3,真没出现4
再说了,每次List list1=new ArrayList(); 时,list1 都指向了一个空的集合然后 到打印list1.size() 之前,都只添加了三个元素进去或许我还有考虑不周的地方吧,请楼主将为4的情况截出来看看
package testcollection;import java.util.ArrayList;
import java.util.Date;
import java.util.List;public class TestList {
public static void main(String[] args) {
int count=0;
int count2=0;
for(int i=1;i<=100;i++){
List list1=new ArrayList();
list1.add(134983);
list1.add("fdjakadf");
list1.add(new Date());
System.out.println(list1.size());//第一次输出
list1.remove(new Date());
List list2=new ArrayList();
list2.add("djfdj");
list2.add("dfjh");
list2.add(342234);
list2.add(new Date());
list2.add("dsfak");
list2.add(new Dog());
list1.add(list2);
System.out.println(list1.size());//第二次输出
if(list1.size()==3){
count++;
}
if(list1.size()==4){
count2++;
}
}
System.out.println(count);
System.out.println(count2);
}
}
class Dog{
}
我又加了个输出语句 按说第一次 第二次 都是3 没有4但是....、
最后count 和count2 的 次数
懂了 O(∩_∩)O谢谢