集合之Collection接口AND Iterator迭代器 AND 增强for AND 泛型
集合,集合是java中提供的一种容器,可以用来存储多个数据。
注意:
①、集合只能存放对象。比如你存一个 int 型数据 1放入集合中,
其实它是自动转换成 Integer 类后存入的,Java中每一种基本类型都有对应的引用类型。
②、集合存放的是多个对象的引用,对象本身还是放在堆内存中。
③、集合可以存放不同类型,不限数量的数据类型。
用ArrayList集合存储int类型数组:
1 public static void main(String[] args) { 2 3 ArrayList<Integer> arr=new ArrayList<Integer>(); 4 arr.add(1); 5 arr.add(12); 6 arr.add(2); 7 for(int i=0;i<arr.size();i++){ 8 System.out.print(arr.get(i)+" "); 9 } 10 }
ArrayList集合存储5个Person类型元素:
1 ArrayList<Person> arr=new ArrayList<Person>(); 2 arr.add(new Person("小猪佩奇",18)); 3 arr.add(new Person("乔治",17)); 4 arr.add(new Person("熊大",16)); 5 arr.add(new Person("熊二",15)); 6 for(int i=0;i<arr.size();i++){ 7 System.out.println(arr.get(i)); 8 }
集合的继承实现关系
查看ArrayList类发现它继承了抽象类AbstractList同时实现接口List,而List接口又继承了Collection接口。
Collection接口为最顶层集合接口了。 采集,聚集
set常用接口:
Collection接口概述
Collection接口是List接口和Set接口的父接口,通常情况下不被直接使用,不过Collection接口定义了一些通用的方法,
通过这些方法可以实现对集合的基本操作,因为List接口和Set接口继承自Collection接口,
所以这些方法对List集合和Set集合是通用的。
Collection接口的基本方法
创建集合的格式:
1 方式1:Collection<元素类型> 变量名 = new ArrayList<元素类型>(); 2 3 方式2:Collection 变量名 = new ArrayList();
方式1创建的集合,只能存储<>中指定的元素类型,该方式为常用方式
方式2创建的集合,集合的元素类型默认为Object类型,即任何类型的元素都可以存储。
代码展示:
1 public static void main(String[] args) { 2 Collection<String> con=new ArrayList<String>(); 3 con.add("粉猪佩奇"); 4 con.add("巴啦啦小魔仙"); 5 con.add("全身变"); 6 con.add("乌卡拉"); 7 con.add("变身"); 8 boolean flag=con.contains("巴啦啦大魔仙"); 9 System.out.println(flag); 10 con.remove("变身"); 11 //con.clear(); 12 con.toArray(); 13 for(int i=0;i<con.size();i++){ 14 ArrayList<String> arr=(ArrayList<String>)con; 15 System.out.println(arr.get(i)); 16 } 17 }
Iterator迭代器
Iterator迭代器概述
java中提供了很多个集合,它们在存储元素时,采用的存储方式不同。我们要取出这些集合中的元素,可通过一种通用的获取方式来完成。
Collection集合元素的通用获取方式:在取元素之前先要判断集合中有没有元素,如果有,就把这个元素取出来,继续在判断,
如果还有就再取出出来。一直把集合中的所有元素全部取出。这种取出方式专业术语称为迭代。
Iterator接口的常用方法:
代码展示:
1 public static void main(String[] args) { 2 ArrayList<Integer> arr=new ArrayList<Integer>(); 3 arr.add(1); 4 arr.add(12); 5 arr.add(2); 6 //1.获取Iterator对象 7 //Iterator<Integer> it=arr.iterator(); 8 //while循环取出元素 9 /*while(it.hasNext()){ 10 System.out.println(it.next()); 11 }*/ 12 //for循环迭代 13 for(Iterator<Integer> it=arr.iterator();it.hasNext();){ 14 System.out.println(it.next()); 15 } 16 /*//2.判断集合下一位是否有元素 17 boolean flag=it.hasNext(); 18 System.out.println(flag); 19 //3.获取元素 20 System.out.println(it.next());*/ 21 22 }
图解:
Iterator迭代方式的代码体现:
1 //1,创建集合对象。 2 Collection<String> coll = new ArrayList<String>(); 3 coll.add("abc1"); 4 coll.add("abc2"); 5 coll.add("abc3"); 6 coll.add("abc4"); 7 8 //2.获取容器的迭代器对象。通过iterator方法。 9 Iterator it = coll.iterator(); 10 11 //3,使用具体的迭代器对象获取集合中的元素。参阅迭代器的方法 12 while(it.hasNext()){ 13 System.out.println(it.next()); 14 } 15 16 /* 17 迭代器for循环的形式的使用 18 for (Iterator it = coll.iterator(); it.hasNext(); ) { 19 System.out.println(it.next()); 20 }
集合元素的向下转型
1 public static void main(String[] args) { 2 Collection<String> con=new ArrayList<String>(); 3 con.add("粉猪佩奇"); 4 con.add("巴啦啦小魔仙"); 5 con.add("全身变"); 6 con.add("乌卡拉"); 7 con.add("变身"); 8 Iterator<String> it=con.iterator(); 9 while(it.hasNext()){ 10 Object obj=it.next(); 11 String str=(String)obj;//如果不加泛型 需要向下转型 12 System.out.println(str.length()); 13 } 14 }
增强for循环
格式:
for(元素的数据类型 变量 : Collection集合or数组){}
1 public static void main(String[] args) { 2 ArrayList<Integer> arr=new ArrayList<Integer>(); 3 arr.add(1); 4 arr.add(12); 5 arr.add(2); 6 //普通for 7 for(int i=0;i<arr.size();i++){ 8 arr.get(i); 9 } 10 //增强for(底层就是迭代器的原理) 11 //for(集合存储类型 变量: 你要遍历的集合名){ 12 //System.out.println(变量); 13 //} 14 for(Integer i:arr){ 15 System.out.println(i); 16 } 17 }
集合练习题:
定义方法frequency统计集合中指定元素出现的次数,如"a" 3,"b" 2,"c" 1
1 import java.util.ArrayList; 2 import java.util.Iterator; 3 import java.util.List; 4 5 public class Demo01 { 6 public static void main(String[] args) { 7 List<String> list = new ArrayList<String>(); 8 list.add("a"); 9 list.add("a"); 10 list.add("a"); 11 list.add("b"); 12 list.add("b"); 13 list.add("c"); 14 list.add("d"); 15 list.add("d"); 16 list.add("d"); 17 list.add("d"); 18 list.add("d"); 19 //调用方法并打印 20 System.out.println(friequency(list, "a")); 21 System.out.println(friequency(list, "b")); 22 System.out.println(friequency(list, "c")); 23 System.out.println(friequency(list, "d")); 24 System.out.println(friequency(list, "xxx")); 25 } 26 public static int friequency(List<String> list,String str){ 27 Iterator<String> it=list.iterator(); 28 int in=0; 29 while(it.hasNext()){ 30 if(it.next()==str){ 31 in++; 32 } 33 } 34 return in; 35 } 36 }
2.某中学有若干学生(学生对象放在一个List中),每个学生有一个姓名属性(String)、班级名称属性(String)和考试成绩属性(double)
某次考试结束后,每个学生都获得了一个考试成绩。遍历list集合,并把学生对象的属性打印出来。
1 public class Stu { 2 private String name; 3 private String classname; 4 private double score; 5 public Stu(String name, String classname, double score) { 6 super(); 7 this.name = name; 8 this.classname = classname; 9 this.score = score; 10 } //创建get/set方法 11 public String getName() { 12 return name; 13 } 14 public void setName(String name) { 15 this.name = name; 16 } 17 public String getClassname() { 18 return classname; 19 } 20 public void setClassname(String classname) { 21 this.classname = classname; 22 } 23 public double getScore() { 24 return score; 25 } 26 public void setScore(double score) { 27 this.score = score; 28 } 29 //重写tostring()方法 30 public String toString() { 31 return "Stu [姓名为" + name + ", 班级名称为" + classname + ", 成绩为" + score + "]"; 32 } 33 } 34 35 import java.util.ArrayList; 36 37 public class Test { 38 39 public static void main(String[] args) { 40 //创建集合对象 41 ArrayList<Stu> arr=new ArrayList<Stu>(); 42 arr.add(new Stu("鲁班大师","小短腿班",89)); 43 arr.add(new Stu("王昭君","法师班",90)); 44 arr.add(new Stu("花木兰","刺客班",98)); //遍历输出 45 for(Stu i:arr){ 46 System.out.println(i); 47 } 48 } 49 }
泛型:
泛型不进入.class文件!
限定泛型的上限:
格式:? extends E
限定泛型的下限:
格式:? super E
转载于:https://www.cnblogs.com/2734156755z/p/9402029.html
集合之Collection接口AND Iterator迭代器 AND 增强for AND 泛型相关推荐
- 49天精通Java,第23天,Java集合,Collection接口,Iterator接口
目录 一.Collection接口 二.Iterator接口 1.Iterator接口方法 2.遍历 3.forEach 4.遍历元素的顺序取决于集合类型 三.Java集合 四.分布式中间件核心原理与 ...
- Java基础加强重温_05:Iterator迭代器、增强for循环、集合综合案例-斗地主、数据结构(栈、队列、数组、链表、红黑树)、List接口、Set接口
摘要: Java基础加强重温_05: Iterator迭代器(指针跟踪元素). 增强for循环(格式.底层). 集合综合案例-斗地主(代码规范抽取代码,集合元素打乱). 数据结构[栈(先进后出,子弹夹 ...
- Java学习之容器上(Collection接口常用方法,Iterator接口,使用foreach循环遍历Collection集合元素,Set集合通用知识(Hashset类,hashcode()与Lin
1.容器API的类图结构如下: JAVA的集合类是一种特别有用的工具类,它可以用于存储数量不等的多个对象,并可以实现常用数据结构,如栈,队列等,除此之外,JAVA集合还可用于保存具有映射关系的关联数组 ...
- JAVA集合1(Collection接口,iterator()方法,增强型for循环)
JAVA集合框架概述 集合框架涉及到的api List接口是继承Collection接口,Set接口是继承Collection接口, ArrayList 类是一个可以动态修改的数组,与普通数组的区别就 ...
- java 集合 接口_Java集合之Collection接口
1 - Java集合介绍 /* 1. 一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象 的操作,就要对对象进行存储. 2. 另一方面,使用Array存储对象方面具有一些弊 端,而 ...
- Java基础23-集合类2(Set接口,Iterator迭代器)
一.Set接口简介 根据API,Set接口是一个不包含重复元素的 collection.更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null ...
- java学习笔记20(Arraylist复习,Collection接口方法,迭代器,增强型for循环)
集合:集合是Java提供的一种容器,可以用来存储多个数据: 集合与数组的区别:集合的长度是可变的,数组的长度是固定的 集合中存储的数据必须是引用类型数据: ArrayList回顾: public cl ...
- Java集合:Collection接口
Collection是一个接口,继承自Iterable.我们先看一下Iterable接口的源码 一.Iterable package java.lang;import java.util.Iterat ...
- 【Java笔记】集合(Collection接口)的使用
面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储.使用 Array 存储对象方面具有一些弊端,而 Java 集合就像一种容器,可以动态地把多个对象的引用放入容器中 ...
- java学习(尚硅谷)集合之Collection接口中的方法
又是好几天没有学Java了,今天下午睡了个觉状态很好,来到图书馆写了点C++的项目代码,写累了看了几集康师傅.笔记如下: Collection接口中的方法: package com.atguigu.j ...
最新文章
- Injection of @Reference dependencies failed;
- unity替换mesh测试
- synchronsized修饰方法的使用
- INDEX_JOIN
- c++string 输入换行符
- Linux 软件的安装
- git切换路径报错:bash: cd: too many arguments
- c语言 艺术编程,C语言编程艺术--条件编译(原创)
- [转]敏捷开发中编写高质量Java代码
- golang string转int8_golang 中string和int类型相互转换
- tornado web高级开发项目
- 主内存和工作内存交互
- [Nginx] 事件模型
- 这3分钟的习惯改变了我的生活
- 【Codeforces 404C】Restore Graph
- 西南科技大学OJ题 图的按录入顺序深度优先搜索1068
- psp用ps1模拟器_PSP自制系统用PS模拟器玩PS游戏指南
- 用html语言设计网页教程,HTML网页制作基础
- 播放.avi后缀视频报出0xc00d5212,编码格式不支持
- warning: #61-D: integer operation result is out of range