1.概述:具有相同性质的一类事物的汇聚的整体,称为集合.任何集合都包含三块内容:对外的接口/接口的实现/对集合运算的算法.
java中使用collection来表示单列集合顶层的接口.
public interface collection1a4db2c2c2313771e5742b6debf617a1 extends itretaor1a4db2c2c2313771e5742b6debf617a1{}
注意:接口不能直接实例化,得需要其子类
2.特点及体系:collection为顶层接口,仅描述集合的共性内容.常用的子接口为 list 和 set.
共性内容:
(1)集合容器的的长度可以改变;
(2)存储的是同一个类型的数据;
(3)只能存引用数据类型(基本数据类型需进行装箱操作);
list : 有序/允许重复;
set : 无序/不允许重复;
queue:队列接口;
sortedset:对集合中的数据进行排序;
3.常用方法:
public boolean add(e e){}:向集合中插入对象; public boolean addall(collection<? extends e> c){}:插入一个集合的内容; public void clear(){}:清除此集合中的所有内容,但是保留该集合容器; public boolean contains(object o){}:判定某一对象是否存在该集合中; public boolean containsall(collection<?> c){}:判断一组对象是否存在该集合中; public boolean equals(object o){}:对象比较; public int hashcode(){}:哈希值; public boolean isempty(){}:判断集合是否为空; public iterator<e> iterator(){}:为iterator接口实例化;返回迭代器实例化对象; public boolean remove(object o){}:删除指定对象; public boolean removeall(collection<?> c){}:删除一组对象; public boolean retainall(collection<?> c){}:保存指定内容; public int size(){}:求出集合大小; public object[] toarray(){}:将一个集合变为对象数组;
代码:
1 import java.util.collection; 2 import java.util.arraylist; 3 4 public class coll{ 5 public static void main(string[] args){ 6 //通过子类实例化接口对象,因为接口全为抽象无法直接实例化 7 collection<string> c = new arraylist<string>(); 8 //添加元素add() 9 c.add("rose"); 10 c.add("jack"); 11 //查看集合内容 12 system.out.println(c);//[rose, jack] 13 //查看集合长度 14 system.out.println(c.size());//2 15 //查看是否包含tom 16 system.out.println(c.contains("tom"));//false 17 //查看是否包含tom 18 c.add("tom"); 19 system.out.println(c.contains(new string("tom")));//true--new string("tom")返回一个"tom"字符串 20 //删除指定对象remove() 21 c.remove("rose"); 22 system.out.println(c);//[jack, tom] 23 //删除所有对象-保留集合 24 c.clear(); 25 system.out.println(c);//[] 26 //判断是否为空 27 system.out.println(c.isempty());//true 28 } 29 }
二.iterator(java.util)
1.定义:专门操作集合的工具类,只要碰到集合的输出操作就一定使用iterator接口
pbulic interface iterator<e>
2.常用方法:
public boolean hasnext(){}:判断是否存在下一个值;
public e next(){}:取出当前元素;
public void remove(){}:移除当前元素;
3.注意事项:
(1)使用迭代器只能删除数据,不能添加数据;
(2)迭代器迭代数据的过程中,不能使用集合自带的方法,改变集合的长度!否则会报异常:concurrentmodificationexception 并发修改异常!
(3)注意在构建迭代器的时候,其后<>内指定类型(如:iterator<string> it = collection.iterator();),否则运算会出错,仅打印没问题;
1 代码1://需求:利用iterator输出集合内容 2 import java.util.collection; 3 import java.util.arraylist; 4 import java.util.iterator; 5 6 public class iteratordemo{ 7 public static void main(string[] args){ 8 //通过子类实例化对象实例化collection对象 9 collection<string> c = new arraylist<string>(); 10 //向集合c中添加元素 11 c.add("green"); 12 c.add("smith"); 13 c.add("philip"); 14 //通过collection的iterator方法,创建iterator对象 15 iterator<string> it =c.iterator(); //注意在构建迭代器的时候,指定类型(此处为<string>),否则运算会出错,仅打印没问题 16 //输出集合c中的所有元素 17 while(it.hasnext()){ 18 system.out.print(it.next()+"\t");//注意,建议判断一次仅调用一次next()方法,由于next()在输出的时候也会使指针向前移动,容易发生"nosuchelementexception" 19 //system.out.println("i like"+it.next());//java.util.nosuchelementexception 20 } 21 } 22 }
1 代码2://需求:删除元素 2 import java.util.collection; 3 import java.util.arraylist; 4 import java.util.iterator; 5 6 public class iteratordemo{ 7 public static void main(string[] args){ 8 //通过子类实例化对象实例化collection对象 9 collection<string> c = new arraylist<string>(); 10 //向集合c中添加元素 11 c.add("green"); 12 c.add("smith8"); 13 c.add("philip"); 14 //foreach迭代 15 for(string s : c){ 16 system.out.print(s+"\t") //green smith8 philip 17 } 18 system.out.println("====================") 19 //通过collection的iterator方法,创建iterator对象 20 iterator<string> it =c.iterator();//注意在构建迭代器的时候,指定类型(此处为<string>),否则运算会出错,仅打印没问题 21 //输出集合c中的所有元素 22 while(it.hasnext()){ 23 //取出集合中的元素 24 string str = it.next(); 25 //判断是否含有数字--正则(字符串最后一位是数字的) 26 if(str.matches("\\w+\\d")){ 27 it.remove(); 28 }else{ 29 system.out.print(str+"\t");// green philip 30 } 31 } 32 system.out.print("删除带数字的名称后为:"+c+"\t");//删除带数字的名称后为:[green, philip] 33 } 34 } 35
三.for--each
1.作用:增强for是jdk1.5之后出现的新特性,可以用于迭代(遍历/循环)集合或数组!可以使用增强for替代迭代器,获取集合的元素内容!
2.格式:
for(数据类型 变量名 : 对象名或数组名){
集合或数组中的每一个元素!
}
以上就是 java中使用collection的实例详解的详细内容。