1 List链表去除某些元素
当需要删除的元素与list中 元素相同时,则需要remove(i)后,还需要i--
List list=new ArrayList();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
list.add("f");
for(int i=0;i<list.size();i++){
String a=(String) list.get(i);
if(a.equals("b")){
list.remove(i);
i--;
}
if(a.equals("b")){
list.remove(i);
i--;
}
}
2 String对象注意
String str1=new String("abc");
String str2=new String("abc");
String str3="abc";
System.out.println("str1="+str1+" str2="+str2); //str1=abc str2=abc ----返回str1和str2的内容
System.out.println("str1的引用="+str1.intern()+" str2的引用="+str2.intern());//str1的引用=abc str2的引用=abc //返回引用的内容
System.out.println(str1==str2); //false ---引用str1和str2的引用不同,故值不同
System.out.println(str1==str2.intern());//false //str1的引用、str2.intern()返回常量池的引用,故不同
System.out.println("abc"==str2.intern());//true //str2.intern()常量池引用指向的内容与abc相同
System.out.println(str1.intern()==str2.intern());//true //str1.intern()与str2.intern(),在常量池中的引用都指向abc,相同,故等
System.out.println(str3==str2.intern());//true //str3直接指向常量池的引用,而str2.intern()也指向常量池的引用,故相同。
str1、str2均开辟了一块堆空间存放String实例,str1和str2在堆中的引用不同,String.intern()返回字符串在常量池中的引用,str1、str2内容同,引用不同。