Java Collection集合 --迭代器 -- 泛型 --List接口案例
案例1
需求:具体要求如下:学生练习
1.定义一个学生类Student,包含三个属性姓名、年龄、性别,
私有成员变量,生成无参,有参构造方法,生成get/set方法并重写toString()方法。
2.创建三个学生对象存入ArrayList集合中。
3. 遍历集合遍历输出。(输出格式如:姓名:张三, 年龄:23, 性别:男)
4. 求出年龄最大的学生,然后将该对象的姓名变为:小猪佩奇。
public class TestDemo {public static void main(String[] args) {//2.创建三个学生对象存入ArrayList集合中。ArrayList<Student> studentArrayList = new ArrayList<Student>();studentArrayList.add(new Student("jack", 18, '男'));studentArrayList.add(new Student("rose", 16, '女'));studentArrayList.add(new Student("tom", 22, '男'));//3.遍历集合遍历输出for (Student s : studentArrayList) {System.out.println(s);}//4.求出年龄最大的学生,然后将该对象的姓名变为:小猪佩奇。//找出年龄最大的那个学生int index = 0;int max = studentArrayList.get(0).getAge();for (int i = 1; i < studentArrayList.size();i++) {Student student = studentArrayList.get(i);if (student.getAge() > max) {max = student.getAge();index = i;}}//循环结束后,index就是年龄最大的学生索引studentArrayList.get(index).setName("小猪佩奇");//遍历for (Student s : studentArrayList) {System.out.println(s);}}
}
案例2:
需求:具体要求如下:学生练习
1.定义一个手机抽象类Phone,包含属性:名称,价格,颜色,品牌,私有成员变量,生成无参,有参构造方法,生成get/set方法并重写toString()方法。
2.定义小米手机类MiPhone继承Phone类,生成无参,有参构造方法
3.定义华为手机类HWPhone继承Phone类,生成无参,有参构造方法
4.定义一个ArrayList集合,泛型使用MiPhone
5.创建5个MiPhone对象,存储到ArrayList集合中
6.定义一个ArrayList集合,泛型使用HWPhone
7.创建5个HWPhone对象,存储到ArrayList集合中
9.定义一个方法,参数类型使用ArrayList集合,泛型要只能接收Phone和其子类
10.在方法中对传递进来的集合使用增强迭代器或者增强for遍历,打印每个手机的属性。
~
创建一个Phone手机类:
public abstract class Phone {private String name;private int price;private String color;private String brand;public Phone() {}public Phone(String name, int price, String color, String brand) {this.name = name;this.price = price;this.color = color;this.brand = brand;}@Overridepublic String toString() {return "Phone{" +"name='" + name + '\'' +", price=" + price +", color='" + color + '\'' +", brand='" + brand + '\'' +'}';}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getPrice() {return price;}public void setPrice(int price) {this.price = price;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}
}
创建一个小米手机类MiPhone:
public class MiPhone extends Phone {//无参+全参public MiPhone(String name, int price, String color, String brand) {super(name, price, color, brand);}public MiPhone() {}
}
创建一个华为手机类HwPhone:
public class HWPhone extends Phone {public HWPhone() {}public HWPhone(String name, int price, String color, String brand) {super(name, price, color, brand);}
}
创建一个测试类
import java.util.ArrayList;public class TestDemo {public static void main(String[] args) {//1.创建小米集合ArrayList<MiPhone> miPhones = new ArrayList<MiPhone>();miPhones.add(new MiPhone("小米10",888,"土豪金","M"));miPhones.add(new MiPhone("小米11",999,"黑色","M"));miPhones.add(new MiPhone("小米12",999,"土豪黄","M"));miPhones.add(new MiPhone("小米13",999,"白色","M"));miPhones.add(new MiPhone("小米15",1999,"土豪白","M"));//2.创建华为集合ArrayList<HWPhone> hwPhones = new ArrayList<HWPhone>();hwPhones.add(new HWPhone("mate6",3999,"土豪金1","HW"));hwPhones.add(new HWPhone("mate7",4999,"土豪金2","HW"));hwPhones.add(new HWPhone("mate8",5999,"土豪金3","HW"));hwPhones.add(new HWPhone("mate9",6999,"土豪金4","HW"));hwPhones.add(new HWPhone("mate10",7999,"土豪金5","HW"));//3.调用方法print(miPhones);print(hwPhones);}public static void print(ArrayList<? extends Phone> phones) {for (Phone phone : phones) {System.out.println(phone);}}
}
案例3
需求:给定以下代码,请定义方法listTest()统计集合中指定元素出现的次数,
如"a": 2,“b”: 2,“c” :1, “xxx”:0。
Collection list = new ArrayList<>();
list.add(“a”);
list.add(“a”);
list.add(“b”);
list.add(“b”);
list.add(“c”);
System.out.println(“a:”+listTest(list, “a”));
System.out.println(“b:”+listTest(list, “b”));
System.out.println(“c:”+listTest(list, “c”));
System.out.println(“xxx:”+listTest(list, “xxx”));
import java.util.ArrayList;
import java.util.Collection;
public class Demo01 {public static void main(String[] args) {Collection<String> list = new ArrayList<>();list.add("a");list.add("a");list.add("b");list.add("b");list.add("c");System.out.println("a:"+ listTest(list,"a"));System.out.println("b:"+listTest(list, "b"));System.out.println("c:"+listTest(list, "c"));System.out.println("xxx:"+listTest(list, "xxx"));}private static int listTest(Collection<String> list,String s) {int count = 0;while(list.contains(s)){list.remove(s);count++;}return count;}
}
案例4
需求:把数组转换为集合
定义一个方法,要求此方法把int数组转成存有相同元素的集合(集合里面的元素是Integer),并返回。
import java.util.ArrayList;public class Demo02 {public static ArrayList<Integer> list= new ArrayList<>();public static void main(String[] args) {int[] arr = {1,2,3,4,5,6,7,8,9};priva(arr);for (Integer integer : list) {System.out.println(integer);}}public static void priva(int[] arr){for (int i = 0; i < arr.length; i++) {list.add(arr[i]);}}
}
案例5
需求:集合转数组
定义一个集合,并把集合(集合里面的元素是Integer)转成存有相同元素的数组,并将结果输出在控制台。
(可以使用Object[]数组类型接收转换的数组)
import java.util.ArrayList;public class Demo03 {public static void main(String[] args) {ArrayList<Integer> list = new ArrayList<>();list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);list.add(6);list.add(7);Object[] arr = new Object[7];for (int i = 0; i < list.size(); i++) {arr[i] = list.get(i);}for (Object o : arr) {System.out.println(o);}}
}
案例6
需求:contains()方法使用
定义一个方法listTest(ArrayList al, String s),要求使用contains()方法
判断al集合里面是否包含s,包含返回true, 不包含返回false。
import java.util.ArrayList;public class Demo04 {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("1");list.add("1");list.add("2");list.add("s");listTest(list,list.get(0));}public static void listTest(ArrayList<String> a1,String a){System.out.println(a1.contains("s"));}
}
案例7
需求:定义一个方法listTest(ArrayList al, Integer s),要求返回s在al里面第一次出现的索引,如果s没出现过返回-1。
import java.util.ArrayList;public class Demo05 {public static void main(String[] args) {ArrayList<Integer> list = new ArrayList<>();list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);listTest(list,1);}public static void listTest(ArrayList<Integer> a1, Integer s){int index = -1;s = 5;for (int i = 0; i < a1.size(); i++) {if(a1.contains(s)){index = i;}}System.out.println(index);}
}
案例8
需求:产生10个1-100的随机数,并放到一个数组中,把数组中大于等于10的数字放到一个list集合中,并打印到控制台。
import java.util.ArrayList;
import java.util.Random;
public class Demo06 {public static Random random = new Random();public static ArrayList<Integer> list = new ArrayList<>();public static void main(String[] args) {int[] arr = new int[10];for (int i = 0; i < 10; i++) {int i1 = random.nextInt(100) + 1;arr[i] = i1;if(arr[i] >= 10){list.add(arr[i]);}}for (Integer integer : list) {System.out.print(integer + " ");}}
}
案例9
需求:已知数组存放一批QQ号码,QQ号码最长为11位,最短为5位
String[] strs = {“12345”,“67891”,“12347809933”,“98765432102”,“67891”,“12347809933”}。
将该数组里面的所有qq号都存放在LinkedList中,将list中重复元素删除,
将list中所有元素分别用迭代器和增强for循环打印出来。
import java.util.Iterator;
import java.util.LinkedList;
public class Demo08 {public static void main(String[] args) {String[] strs = {"12345","67891","12347809933","98765432102","67891","12347809933"};LinkedList<String> list = new LinkedList<>();for (int i = 0; i < strs.length; i++) {list.addLast(strs[i]);}for (int i = 0; i < list.size(); i++) {for (int j = i + 1; j < list.size(); j++) {if(list.get(i).contains(list.get(j))){list.remove(i);j--;}}}Iterator it = list.iterator();while(it.hasNext()){String s = (String) it.next();System.out.println(s);}System.out.println("========");for (String z : list) {System.out.println(z);}}
}
案例10
需求:请定义一个Collection类型的集合,存储以下分数信息:
88.5,39.2,77.1,56.8,89.0,99.0,59.5
请编程实现以下功能:
使用增强for遍历所有元素,并打印
使用增强for遍历所有元素,打印不及格的分数;
使用增强for遍历所有元素,计算不及格的分数的数量,和平均分,并打印计算结果。
使用增强for遍历所有元素,求出最高分,并打印;
import java.util.ArrayList;
import java.util.Collection;
public class Demo09 {public static void main(String[] args) {Collection<Double> coll = new ArrayList<>();coll.add(88.5);coll.add(39.2);coll.add(77.1);coll.add(56.8);coll.add(89.0);coll.add(99.0);coll.add(59.0);method1(coll);method2(coll);method3(coll);method4(coll);}public static void method1(Collection<Double> coll){System.out.print("分数:");for (Double aDouble : coll) {System.out.print(aDouble + " ");}System.out.println(" ");}public static void method2(Collection<Double> coll){System.out.print("不及格:");for (Double aDouble : coll) {if(aDouble < 60){System.out.print(aDouble + " ");}}System.out.println(" ");}public static void method3(Collection<Double> coll){int sum = 0;int count = 0;System.out.print("不及格:");for (Double aDouble : coll) {if(aDouble < 60){System.out.print(aDouble + " ");sum += aDouble;count++;}}double avg = sum / count;System.out.println( "平均分" + avg + ";不及格的有:" + count + "人");}public static void method4(Collection<Double> coll){double max = 0;for (Double aDouble : coll) {if(max < aDouble){max = aDouble;}}System.out.println("最高分:" + max);}
}
案例11
需求:有以下类结构:
人员类(Person):
|–学生类(Student)
|–Java学生类(JavaStudent)
|–UI学生类(UIStudent)
|–教师类(Teacher)
|–Java教师类(JavaTeacher)
|–UI教师类(UITeacher)
要求:
请按上述要求定义类,并实现继承关系即可(不需要定义类成员)
请按以下格式和要求定义测试类和方法:
public class Test10{public static void main(String[] args){ArrayList<String> list1 = new ArrayList<>();ArrayList<Person> list2 = new ArrayList<>();ArrayList<Student> list3 = new ArrayList<>();ArrayList<JavaStudent> list4 = new ArrayList<>();ArrayList<UIStudent> list5 = new ArrayList<>();ArrayList<Teacher> list6 = new ArrayList<>();ArrayList<JavaTeacher> list7 = new ArrayList<>();ArrayList<UITeacher> list8 = new ArrayList<>();//请测试哪些集合可以调用print1()方法//请测试哪些集合可以调用print2()方法//请测试哪些集合可以调用print3()方法//请测试哪些集合可以调用print4()方法}//要求:参数可以接收任何泛型的ArrayList参数public static void print1(ArrayList<______________> list){}//要求:参数可以接收任何Person及其子类泛型的ArrayList参数public static void print2(ArrayList<______________> list){}//要求:参数可以接收任何Student及其子类泛型的ArrayList参数public static void print3(ArrayList<______________> list){}//要求:参数可以接收任何Java学员,及其父类泛型的ArrayList参数public static void print4(ArrayList<______________> list){}
}
建立Person类
建立Person的子类Student 学生类和Teacher老师类
建立Student的子类JavaStudent和UiStudent
建立Teacher的子类JavaTeacher和UiTeacher
public class Person {}
public class Student extends Person {}
public class Teacher extends Person {}
public class JavaStudent extends Student{}
public class UIStudent extends Student {}
public class JavaTeacher extends Teacher {}
public class UITeacher extends Teacher {}
建立一个测试类TestDemo
import java.util.ArrayList;public class TestDemo{public static void main(String[] args){ArrayList<String> list1 = new ArrayList<>();ArrayList<Person> list2 = new ArrayList<>();ArrayList<Student> list3 = new ArrayList<>();ArrayList<JavaStudent> list4 = new ArrayList<>();ArrayList<UIStudent> list5 = new ArrayList<>();ArrayList<Teacher> list6 = new ArrayList<>();ArrayList<JavaTeacher> list7 = new ArrayList<>();ArrayList<UITeacher> list8 = new ArrayList<>();//请测试哪些集合可以调用print1()方法//请测试哪些集合可以调用print2()方法//请测试哪些集合可以调用print3()方法//请测试哪些集合可以调用print4()方法}//要求:参数可以接收任何泛型的ArrayList参数public static void print1(ArrayList<? extends Object> list){}//要求:参数可以接收任何Person及其子类泛型的ArrayList参数public static void print2(ArrayList<? extends Person> list){}//要求:参数可以接收任何Student及其子类泛型的ArrayList参数public static void print3(ArrayList<? extends Student> list){}//要求:参数可以接收任何Java学员,及其父类泛型的ArrayList参数public static void print4(ArrayList<? super JavaStudent> list){}
}
自己写的有什么错误请指出,我好早早修正。
Java Collection集合 --迭代器 -- 泛型 --List接口案例相关推荐
- 2021-06-19复习java Collection集合 Iterator接口_迭代器 增强for循环 泛型
2021-06-19复习java Collection集合 Iterator接口_迭代器 增强for循环 泛型 Collection集合 java.util.coLlection接口 所有单列集合的最 ...
- Java集合之Collection集合、泛型 【集合综合案例:赌神、赌侠、赌神斗地主】
第一章. Collection集合 1.1 集合概述 集合:集合是java中提供的一种容器,可以用来存储多个数据. 集合和数组既然都是容器,它们有啥区别呢? 数组的长度是固定的.集合的长度是可变的. ...
- -1-3 java集合框架基础 java集合体系结构 Collection 常用java集合框架 如何选择集合 迭代器 泛型 通配符概念 Properties 集合 迭代器...
集合又称之为容器存储对象的一种方式 •数组虽然也可以存储对象,但长度是固定的:显然需要可变长度的容器 集合和数组的区别? A:长度区别 ...
- 【Java】Collection集合和泛型
学习目标:会存取,掌握特性 学习方式:学习顶层接口/抽象类的共性方法,使用底层的子类创建对象使用 1 集合框架 集合类的继承体系: Collection接口: ·············1) List ...
- 小东吖 之 java Collection集合和迭代器
一.Collection集合 数组: 存储同一种数据类型的集合容器. 数组的特点: 1. 只能存储相同数据类型的数据 2. 一旦给定了长度,数组长度被固定了,不能改变 3. 数组中的元素与元素之间的内 ...
- plsql 循环存储过程返回数据集合_Java基础(十五)——Collection集合、泛型 - 寒江雨
Collection集合 集合概述 集合:集合是Java中提供的一种容器,可以用来存储多个数据 数组的长度是固定的,集合的长度是可变的 数组中存储的是同一种数据类型的元素,可以存储基本数据类型也可以存 ...
- Java Collection集合的三种遍历方式
文章目录 Collection遍历方式 迭代器遍历 foreach遍历 Lambda遍历 Collection遍历方式 Collection集合遍历的方式有三种: 迭代器 foreach/增强for循 ...
- Day 4:集合——迭代器与List接口
Collection-迭代方法 1.toArray() 返回Object类型数据,接收也需要Object对象! Object[] toArray(); Collection c = new Arra ...
- Java——Collection集合
1.集合概述 在前面基础班我们已经学习过并使用过集合ArrayList ,那么集合到底是什么呢? 集合:集合是java中提供的一种容器,可以用来存储多个数据. 集合和数组既然都是容器,它们有啥区别呢? ...
最新文章
- Java实现markdown转html,并且生成TOC目录
- @老板:别开视频会议了,效率低没人care,斯坦福、微软都可以作证
- JQuery Attributes 方法说明
- 3分钟搞定静态出接口
- helloworld:一个完整的WCF案例
- 2017(深圳) .NET技术分享交流会 第二期,将有网络直播
- 霍纳法树形流图中处理机p个数_2009系统结构试卷答案
- 测试两个主机之间的连通性_借助网络测试神器极速解决网络故障
- 重磅!云+X 案例征集正式启动啦!
- Thread.sleep() / Object.wait() / Condition.await() / LockSupport.park() / LockSupport.unpark() 区别
- Ubuntu 19.10 停止支持 32 位的 x86 架构
- 【XNA4.0】动画
- 大数据分析体系由哪些层级构成
- 洛谷 P1595 信封问题
- Visual Studio + VAssistX常用快捷键收藏
- 微信小程序毕业设计 就餐预约点餐小程序毕业设计
- flutter混编ios打包生成ipa文件
- 正式版苹果雪豹操作系统光盘镜像
- linux下kegg注释软件,KEGG pathway注释过程
- 海淘也疯狂 跨境电商网站8月监测报告