(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
原创粉丝点击