(35)Java学习笔记——集合框架 / 增强for /静态导入 /可变参数
来源:互联网 发布:3d66网软件下载 编辑:程序博客网 时间:2024/05/18 00:11
增强for
for 循环的一种
格式:
for ( 元素数据类型 变量 : 数组或者Collection集合){
使用变量即可,该变量就是元素
}
好处:简化了数组和集合的遍历
弊端:增强for的目标不能为null
解决:先对增强for的目标进行判断
范例:
package cn.itcast_01;import java.util.ArrayList;import java.util.List;/* * 增强for * 格式:for ( 元素数据类型 变量 : 数组或者Collection集合){ 使用变量即可,该变量就是元素} */public class ForDemo {public static void main(String[] args) {//定义一个int 数组,并遍历int[] arr = {1,2,3,4,5};for(int x=0;x<arr.length;x++){System.out.println(arr[x]);}System.out.println("--------------------");//增强forfor(int x:arr){System.out.println(x);}System.out.println("---------------------");//定义一个字符串数组,增强for遍历String[] strArray = {"唐僧","孙悟空","猪八戒","沙僧"};for(String s :strArray){System.out.println(s);}System.out.println("---------------------");//定义一个集合,增强for遍历ArrayList<String> array = new ArrayList<String>();array.add("刘德华");array.add("张学友");array.add("郭富城");array.add("黎明");for(String s1:array){System.out.println(s1);}//需要对增强for的目标进行判断,增强for的目标不能为nullList<String> list =null;if(list != null){for(String s : list){System.out.println(s);}}}}
————————————————————————————————————————————
静态导入
格式:
import static 包名。。。类名 . 方法名;
可以直接导入到方法的级别
注意事项:
方法必须是静态的
如果有多个同名的静态方法,容易不知道用谁,这个时候要用,必须加前缀。只需要看懂。
————————————————————————————————————————————————
可变参数
定义方法的时候不知道定义多少个参数,就用可变参数
格式:
修饰符 返回值类型 方法名 (数据类型 .......变量名){
}
注意:这里的变量是个数组。
范例:
package cn.itcast_02;public class ArgsDemo {public static void main(String[] args) {// 两个数据求和int a = 10;int b = 20;int result = sum(a, b);System.out.println(result);//三个数据的求和int c = 30 ;result = sum(a,b,c);System.out.println(result);result = sum(a,b,c,40,60,70);System.out.println(result);}private static int sum(int...a){int s = 0;for(int x:a){s +=x;}return s;}}
Arrays工具类的asList()方法
public static <T> List <T> asList(T... a)
把数组转成集合的方法
注意事项:
虽然可以把数组转成集合,但是集合的长度不能改变,其本质还是数组
范例:
package cn.itcast_02;import java.util.Arrays;import java.util.List;/* * public static <T> List <T> asList(T... a) 把数组转成集合的方法 */public class AsListDemo {public static void main(String[] args) {/*//定义一个数组String[] strArray ={"hello","world","java"};*/List<String> list = Arrays.asList("hello","world","java");//可变参数//遍历for (String s: list){System.out.println(s);}}}
练习01:集合嵌套存储和遍历元素的案例:
图解:
代码:
package cn.itcast_03;import java.util.ArrayList;/* * 集合嵌套遍历 * 需求: * 我们班有学生,每一个学生是一个对象。所以我们可以用一个集合表示班级学生 * 但是我们旁边还有班级,每个班级也是一个集合 * 而我现在有多个集合ArrayList,也要用集合存储。 * 就是:ArrayList<ArrayList<Strudent>> */public class ArrayListDemo {public static void main(String[] args) {//创建大集合ArrayList<ArrayList<Student>> bigArrayList = new ArrayList<ArrayList<Student>>();//创建第一个班级集合ArrayList<Student> firstArrayList = new ArrayList<Student>();Student s1 = new Student("唐僧",30);Student s2 = new Student("孙悟空", 500);Student s3 = new Student("猪八戒",200);Student s4 = new Student("沙僧",100);Student s5 = new Student("白龙马",80);//学生进班firstArrayList.add(s1);firstArrayList.add(s2);firstArrayList.add(s3);firstArrayList.add(s4);firstArrayList.add(s5);//把第一个班级添加到学籍系统bigArrayList.add(firstArrayList);//创建第二个班级集合ArrayList<Student> secondArrayList = new ArrayList<Student>();Student s11 = new Student("朱茵",27);Student s22 = new Student("周星驰",33);Student s33 = new Student("吴孟达",30);//学生进班secondArrayList.add(s11);secondArrayList.add(s22);secondArrayList.add(s33);//把第二个班级加入学籍系统bigArrayList.add(secondArrayList);//创建第三个班级ArrayList<Student> thirdArrayList = new ArrayList<Student>();Student s111 = new Student("刘德华",50);Student s222 = new Student("郭富城",48);Student s333 = new Student("黎明",37);Student s444 = new Student("张学友",44);//学生入班thirdArrayList.add(s111);thirdArrayList.add(s222);thirdArrayList.add(s333);thirdArrayList.add(s444);//把第三个班级加入学籍系统bigArrayList.add(thirdArrayList);//遍历集合——增强for嵌套for(ArrayList<Student> array: bigArrayList){for(Student s :array ){System.out.println(s.getName()+"----"+s.getAge());}}}}
练习02:获取10个1~20之间的随机数,要求不能重复
package cn.itcast_04;import java.util.ArrayList;import java.util.Random;/* * 获取10个1~20之间的随机数,要求不能重复 * 因为长度不好去顶,而数组的长度是固定的,所以数组不合适 * 所以用集合来实现 * 思路: * A/创建产生随机数的对象 * B/创建一个存储随机数的集合 * C/定义一个统计变量,从0开始 * D/判断统计便利是否小于10 * 是:先产生一个随机数,判断该随机数在集合中是否存在 * 如果不存在,就添加,统计变量++ * 如果存在:就不搭理它 * 否:不搭理他 * E/遍历集合 */public class RandomDemo {public static void main(String[] args) {//创建随机数对象Random r = new Random();//创建一个存储随机数的集合ArrayList<Integer> array = new ArrayList<Integer>();//定义一个统计变量,从0开始int count = 0;//判断统计遍历是否小于10while(count <10){//产生随机数int number = r.nextInt(20)+1;//判断随机数在集合中是否存在if(!array.contains(number)){array.add(number);count++;}}//便利集合for(Integer i : array){System.out.println(i);}}}
练习03:键盘录入多个数据,以0结束,要求在控制台输出这多个数据中的最大值。
package cn.itcast_05;import java.util.ArrayList;import java.util.Arrays;import java.util.Scanner;/* * 思路: * A / 键盘录入,不知道多少个,所以用集合存储 * B / 以0结束。当键盘录入的是0,就结束 * C / 把集合转成数组,对数组排序,获取该数组中最大索引的值就是最大值 */public class ArrayListDemo {public static void main(String[] args) {//键盘录入Scanner sc = new Scanner(System.in); //键盘录入,不知道有多少个,所以用集合存储ArrayList<Integer> array = new ArrayList<Integer>();//判断录入是否为0while(true){System.out.println("请输入数据:");int number = sc.nextInt();if(number!=0){array.add(number);}else{break;}}//把集合转成数组//用public <T> T[ ] toArray(T[] a )方法Integer[] i = new Integer[array.size()];array.toArray(i);//对数组排序//public static void sort(Object[] a)Arrays.sort(i);//获取该数组中的最大索引的值System.out.println(i[i.length-1]);}}
0 0
- (35)Java学习笔记——集合框架 / 增强for /静态导入 /可变参数
- 集合—增强for、可变参数、静态导入
- Java基础之集合框架(四)--Collections、Arrays、增强for循环、可变参数、静态导入
- Java基础之集合框架(四)--Collections、Arrays、增强for循环、可变参数、静态导入
- Java基础学习笔记16——(List的子类,泛型类,增强for循环,静态导入,可变参数)
- 黑马程序员——>第十七天<集合(Collections-增强for循环-可变参数-静态导入)>
- 集合框架__JDK1.5新特性__【增强for循环】【可变参数】【静态导入】
- 集合框架_List的子类、泛型、增强for循环、静态导入、可变参数总结
- Java学习日记(九)Collection、泛型、Map集合、Collections&Arrays、增强for语句、可变参数、静态导入
- 黑马程序员--学习笔记(集合框架中的两个工具类,高级for循环,可变参数,静态导入)
- 集合框架——可变参数、静态导入
- 静态导入、可变参数、增强for循环
- 静态导入\可变参数\增强for循环
- java 集合学习笔记2-ArrayList LinkedList Vector 泛型 增强for 可变参数
- 黑马程序员——Collections、Arrays、增强for、可变参数、静态导入
- 黑马程序员—JDK1.5新特性(增强for循环、可变参数、静态导入)
- 静态导入 可变参数 增强for循环 自动装箱 枚举
- 静态导入,可变参数,枚举与增强型for循环
- 临走之时
- 37.android四大组件之广播
- Python中的lambda
- 物理层的部分工作
- SICP
- (35)Java学习笔记——集合框架 / 增强for /静态导入 /可变参数
- Closure
- DockerInAction-Persistent storage and shared state with volumes
- Ubuntu系统安装配置JDK
- 汇编的意义
- 算法导论---堆排序
- C#面试题
- RxJava不要重复使用(reuse)Subscriber的实例
- 序列化