java集合框架 java.util.Collection接口 Collection接口中定义了所有集合都要具备的功能,它也是所有集合的顶级接口。 Collection下面有几种不同集合的分类,常见的两个:
1.java.util.List:List接口表示的是线性表,是有序的且可以存放重复元素的集合 * 2.java.util.Set:Set接口表示的是不可重复的集合 这里指的重复是元素是否可以重复,而判断重复的标准是根据元素自身equals比较。
public static void main ( String [ ] args) {
Collection c = new ArrayList ( ) ;
/*
* boolean add(E e)
* 向当前集合中添加给定元素,成功添加后返回true
*/
c. add ( "one" ) ;
c. add ( "two" ) ;
c. add ( "three" ) ;
c. add ( "four" ) ;
c. add ( "five" ) ;
System . out. println ( c) ;
/*
* int size()
* 返回当前集合的元素个数
*/
int size = c. size ( ) ;
System . out. println ( "size:" + size) ;
/*
* boolean isEmpty()
* 判断当前集合是否为空集
*/
boolean isEmpty = c. isEmpty ( ) ;
System . out. println ( "isEmpty:" + isEmpty) ;
/*
* void clear()
* 清空集合
*/
c. clear ( ) ;
System . out. println ( c) ;
System . out. println ( "size:" + c. size ( ) ) ;
System . out. println ( "isEmpty:" + c. isEmpty ( ) ) ;
}
boolean contains(E e)
判断当前集合是否包含给定元素,是否包含的依据是是否 与集合现有元素存在equals比较 为true的情况。
public static void main ( String [ ] args) {
Collection c = new ArrayList ( ) ;
c. add ( new Point ( 1 , 2 ) ) ;
c. add ( new Point ( 3 , 4 ) ) ;
c. add ( new Point ( 5 , 6 ) ) ;
c. add ( new Point ( 7 , 8 ) ) ;
System . out. println ( c) ;
Point p = new Point ( 1 , 2 ) ;
boolean contains = c. contains ( p) ;
System . out. println ( "包含:" + contains) ;
/*
* 删除元素也是依靠元素equals比较进行删除的,如果集合有重复元素则
* 只删除一次。
*/
c. remove ( p) ;
System . out. println ( c) ;
}
集合只能放引用类型元素,并且存放的也是元素的引用(地址)
public static void main ( String [ ] args) {
Collection c = new ArrayList ( ) ;
Point p = new Point ( 1 , 2 ) ;
c. add ( p) ;
System . out. println ( "p:" + p) ;
System . out. println ( "c:" + c) ;
p. setX ( 2 ) ;
System . out. println ( "p:" + p) ;
System . out. println ( "c:" + c) ;
}
运行结果为 集合间的一些操作:
public static void main ( String [ ] args) {
Collection < String > c1 = new ArrayList < > ( ) ;
//Collection c1 = new HashSet();//HashSet是由HashMap实现的
c1. add ( "java" ) ;
c1. add ( "c++" ) ;
c1. add ( ".net" ) ;
System . out. println ( "c1:" + c1) ;
Collection < String > c2 = new ArrayList < > ( ) ;
c2. add ( "ios" ) ;
c2. add ( "android" ) ;
c2. add ( "java" ) ;
System . out. println ( "c2:" + c2) ;
/*
* addAll方法是取并集操作,会将给定集合中的所有元素添加到当前集合中。
* 如果当前集合是Set集合,重复元素不能被再次添加进集合。
*/
c1. addAll ( c2) ;
System . out. println ( "c1:" + c1) ;
Collection < String > c3 = new ArrayList < > ( ) ;
c3. add ( "c++" ) ;
c3. add ( "android" ) ;
c3. add ( "php" ) ;
System . out. println ( "c3:" + c3) ;
/*
* containsAll用于判断当前集合是否包含给定集合中的所有元素
*/
boolean contains = c1. containsAll ( c3) ;
System . out. println ( "全包含:" + contains) ;
/*
* removeAll用于删除当前集合中与给定集合的共有元素。给定集合中的元素
* 不受影响。
*/
c1. removeAll ( c3) ;
System . out. println ( "c1:" + c1) ;
System . out. println ( "c3:" + c3) ;
}
运行结果: 遍历集合
public static void main ( String [ ] args) {
Collection < String > c = new ArrayList < > ( ) ;
c. add ( "one" ) ;
c. add ( "#" ) ;
c. add ( "two" ) ;
c. add ( "#" ) ;
c. add ( "three" ) ;
c. add ( "#" ) ;
c. add ( "four" ) ;
c. add ( "#" ) ;
c. add ( "five" ) ;
System . out. println ( c) ;
@SuppressWarnings ( "rawtypes" )
Iterator it = c. iterator ( ) ;
/*
* boolean hasNext()
* 通过迭代器判断集合是否还有下一个元素可以遍历
*/
while ( it. hasNext ( ) ) {
/*
* E next()
* 通过迭代器遍历集合下一个元素
*/
String str = ( String ) it. next ( ) ;
if ( "#" . equals ( str) ) {
//迭代器要求在遍历的过程中不得通过集合方法增删元素,否则抛异常
//c.remove(str);
//迭代器的remove方法可以将本次next()遍历的元素从集合中删除
it. remove ( ) ;
}
System . out. println ( str) ;
}
System . out. println ( c) ;
}
结果如下