【Collection】
1、contains方法
boolean contains(Object o)
该方法会用于判断给定的元素是否被包含在集合中。若包含则返回true,否则返回false。
这里需要注意的是,集合在判断元素是否被包含在集合中是根据每个元素的equals()保证contains()方法的合理结果。
public void testContains(){
Collection cells=new ArrayList();
cells.add(new Cell(1,2));
cells.add(new Cell(1,3));
cells.add(new Cell(2,2));
cells.add(new Cell(2,3));
Cell cell=new Cell(1,3);
boolean flag=cells.contains(cell);//List集合contains方法和对象的equals方法相关
System.out.println(flag);//true,如果Cell不重写equals方法将为false
}
2、size、clear、isEmpty
int size()该方法用于返回当前集合中的元素总数。
void clear()该方法用于清空当前集合。
boolean isEmpty()该方法用于判断当前集合中是否不包含任何元素。
public void testSizeAndClearAndIsEmpty(){
Collection c=new HashSet();
System.out.println(c.isEmpty());//true
c.add("java");
c.add("cpp");
c.add("php");
c.add("c#");
c.add("objective-c");
System.out.println("isEmpty:"+c.isEmpty()+",size:"+c.size());//isEmpty:false,size:5
c.clear();
System.out.println("isEmpty:"+c.isEmpty()+",size:"+c.size());//isEmpty:true,size:0
}
2、addAll、containsAll
boolean addAll(Collection c)该方法需要我们传入一个集合,并将该集合中的所有元素添加到当前集合中。
如果此collection由于调用而发生更改,则返回true。
boolean containsAll(Collection c)该方法用于判断当前集合是否包含给定集合中的所有元素,若包含则返回true。
public void testAddAllAndContainsAll(){
Collection c1=new ArrayList();
c1.add("java");
c1.add("cpp");
c1.add("php");
c1.add("c#");
c1.add("objective-c");
System.out.println(c1);//[java,cpp,php,c#,objective-c]
Collection c2=new HashSet();
c2.addAll(c1);
System.out.println(c2);//[cpp,php,c#,java,objective-c]
Collection c3=new ArrayList();
c3.add("java");
c3.add("cpp");
System.out.println(c1.containsAll(c3));//true
}
【Iterator】
1、hasNest、next方法
迭代器用于遍历集合元素。获取迭代器可以使用Collection定义的方法:Iterator iterator()
迭代器Iterator是一个接口,集合在重写Collection的iterator()方法时利用内部类提供了迭代器的实现。
Iterator提供了统一的遍历集合元素的方式,其提供了用于遍历集合的两个方法:
1)boolean hasNext():判断集合是否还有元素可以遍历。
2)E next:返回迭代的下一个元素
public void testHasNextAndNext(){
Collection c=new HashSet();
c.add("java");
c.add("cpp");
c.add("php");
c.add("c#");
c.add("objective-c");
Iterator it=c.iterator();
while(it.hasNext()){
String str=it.next();
}
}
2、remove方法
在使用迭代器遍历集合时,不能通过集合的remove方法删除集合元素,否则会抛出并发更改异常。我们可以通过迭代器自身提供的remove()方法来删除通过next()迭代出的元素。
void remove()
迭代器的删除方法是在原集合中删除元素。
这里需要注意的是,在调用remove方法前必须通过迭代器的next()方法迭代过元素,那么删除的就是这个元素。并且不能再次调用remove方法,除非再次调用next()后方可再次调用。
public void testRemove(){
Collection c=new HashSet();
c.add("java");
c.add("cpp");
c.add("php");
c.add("c#");
c.add("objective-c");
System.out.println(c);//[cpp,php,c#,java,objective-c]
Iterator it=c.iterator();
while(it.hasNext()){
String str=it.next();
if(str.indexOf('c')!=-1){
it.remove();//删除包含字母c的元素
}
}
System.out.println(c);//[php,java]
}
3、增强型for循环
Java5.0之后推出了一个新的特性,增强for循环,也称为新循环。该循环不通过用于传统循环的工作,其只用于遍历集合或数组。
语法:
for(元素类型 e:集合或数组){
循环体
}
新循环并非新的语法,而是在编译过程中,编译器会将新循环转换为迭代器模式。所以新循环本质上是迭代器。
public void testForeach(){
Collection c=new HashSet();
c.add("java");
c.add("cpp");
c.add("php");
c.add("c#");
c.add("objective-c");
for(String str:c){
}
//CPP PHP C# JAVA OBJECTIVE-C
}
领取专属 10元无门槛券
私享最新 技术干货