java自学之旅(4)集合类2
2016-06-25 14:10
411 查看
集合框架:
1)Collection
addAll、containsAll
2)Iterator(迭代器)
hasNext、next方法
remove方法
增强型for循环
3)泛型机制
泛型在集合中的应用
addAll:该方法需要我们传入一个集合,并将该集合中的所有元素添加到当前集合中。
如果次Collection由于调用而发生更改,则返回true。
containsAll:该方法用于判断当前集合是否包含给定集合中的所有元素,若包含则返回true。
hasNext、next方法:
1)迭代器用于遍历集合元素
2)迭代器Iterator是一个接口,集合在重写Collection的Iterator()方法时利用内部类提供的迭代器实现。
3)Iterator提供了统一的遍历集合元素的方式
— boolean hasNext() 判断集合是否还有元素可以遍历
— E next() 返回迭代的下一个元素
remove方法
1)在使用迭代器遍历集合时,不能通过集合的的remove方法来删除集合元素,否则会抛出并发更改异常。我们可以通过迭代器自身提供的remove()方法来删除通过next()迭代出的元素。— void remove()
2)迭代器的删除方法是在元集合中删除元素。
3)注意:在调用remove方法前,必须通过迭代器的next()方迭代过元素,那么删除的就是这个元素。并且不能再次调用remove方法,除非再次调用next()后方可再次调用。
增强型for循环
该循环只用与遍历集合或数组。
for (循环类型 e : 集合或数组){
循环体
}
本质:新循环并非新的语法,而是在编译过程中,编译器会将新循环转化为迭代器的模式。所以新循环本质上是迭代器。
泛型在集合中的应用:
泛型的本质是参数化类型。在类、接口、方法的定义过程当中,所操作的数据类型被传入的参数指定。
java泛型机制广泛应用于集合框架中。所有的集合类型都带有泛型参数,这样在创建集合时可以指定放入集合中元素的类型。java编译器可以据此进行类型检查,这样可以减少代码在运行时出现错误的可能性。
1)Collection
addAll、containsAll
2)Iterator(迭代器)
hasNext、next方法
remove方法
增强型for循环
3)泛型机制
泛型在集合中的应用
addAll:该方法需要我们传入一个集合,并将该集合中的所有元素添加到当前集合中。
如果次Collection由于调用而发生更改,则返回true。
containsAll:该方法用于判断当前集合是否包含给定集合中的所有元素,若包含则返回true。
hasNext、next方法:
1)迭代器用于遍历集合元素
2)迭代器Iterator是一个接口,集合在重写Collection的Iterator()方法时利用内部类提供的迭代器实现。
3)Iterator提供了统一的遍历集合元素的方式
— boolean hasNext() 判断集合是否还有元素可以遍历
— E next() 返回迭代的下一个元素
remove方法
1)在使用迭代器遍历集合时,不能通过集合的的remove方法来删除集合元素,否则会抛出并发更改异常。我们可以通过迭代器自身提供的remove()方法来删除通过next()迭代出的元素。— void remove()
2)迭代器的删除方法是在元集合中删除元素。
3)注意:在调用remove方法前,必须通过迭代器的next()方迭代过元素,那么删除的就是这个元素。并且不能再次调用remove方法,除非再次调用next()后方可再次调用。
增强型for循环
该循环只用与遍历集合或数组。
for (循环类型 e : 集合或数组){
循环体
}
本质:新循环并非新的语法,而是在编译过程中,编译器会将新循环转化为迭代器的模式。所以新循环本质上是迭代器。
泛型在集合中的应用:
泛型的本质是参数化类型。在类、接口、方法的定义过程当中,所操作的数据类型被传入的参数指定。
java泛型机制广泛应用于集合框架中。所有的集合类型都带有泛型参数,这样在创建集合时可以指定放入集合中元素的类型。java编译器可以据此进行类型检查,这样可以减少代码在运行时出现错误的可能性。
package mycollection; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.Iterator; public class TestCollection2 { public static void main(String[] args) { testAddAllAndContainsAll(); System.out.println("****************************************************"); testIterator(); System.out.println("****************************************************"); testRemove(); System.out.println("****************************************************"); testForeach(); } /**测试addAll和containsAll方法**/ public static void testAddAllAndContainsAll(){ Collection<String> c1 = new ArrayList<>(); c1.add("java"); c1.add("cpp"); c1.add("php"); c1.add("c#"); c1.add("objective-c"); System.out.println(c1); Collection<String> c2 = new HashSet<>(); c2.addAll(c1); System.out.println(c2);//为什么元素复制后输出的的顺序发生改变?? Collection<String> c3 = new ArrayList<>(); c3.add("java"); c3.add("cpp"); System.out.println(c1.containsAll(c3)); } /**使用Iterator的hasNext方法、next方法遍历集合**/ public static void testIterator(){ Collection<String> c1 = new ArrayList<>(); c1.add("java"); c1.add("cpp"); c1.add("php"); c1.add("c#"); c1.add("objective-c"); Iterator<String> it = c1.iterator(); while (it.hasNext()){ String str = it.next();//判断集合是否还有元素可以遍历 System.out.println(str);//返回迭代的下一个元素 } } /**测试Iterator的remove方法**/ public static void testRemove(){ Collection<String> c1 = new ArrayList<>(); c1.add("java"); c1.add("cpp"); c1.add("php"); c1.add("c#"); c1.add("objective-c"); System.out.println(c1); Iterator<String> it = c1.iterator(); while (it.hasNext()){ String str = it.next(); //用indexOf方法判断字符串元素是否包含c if (str.indexOf("c")!=-1){ //为什么这行里的c用单引号也可以?? it.remove(); } } System.out.println(c1); } /**使用增强型for循环遍历集合**/ public static void testForeach(){ Collection<String> c1 = new ArrayList<>(); c1.add("java"); c1.add("cpp"); c1.add("php"); c1.add("c#"); c1.add("objective-c"); for (String str : c1){ //将遍历到的字符串元素转化为大写后输出 System.out.println(str.toUpperCase()+" "); } } }
相关文章推荐
- 总结eclipse中安装maven插件
- Java设计模式——装饰者模式
- Java中的clone方法使用
- J2EE开发:struts2 文件下载
- J2EE开发:struts2 文件上传(单个文件与多个文件)
- [2016/06/25] LeetCode / Java - Day 3 -
- java 字母数字和下划线 正则表达式
- 手把手教你用java实现邮件发送及常见问题解决
- SpringMVC总结帖
- springboot-热部署
- java集合的一些技巧。
- Java方法传参
- oppo 环信 java.lang.UnsatisfiedLinkError(带时效性)
- JAVA模拟内存分配与释放——首次适应算法
- Java对象在Hibernate持久化层的状态
- springmvc第一篇
- Java程序初始化顺序
- eclipse安装genymobile方法
- Struts学习体验【坚持更新】
- java8快速入门