第一节ArrayList的基本使用
package Test;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
//练习题:创建ArrayList对象,代表集合容器,往里面添加元素
public class Test {
public static void main(String[] args) {
// 1.创建ArrayList集合的对象
ArrayList list=new ArrayList();
// 2.添加数据
list.add("java");
list.add("java");
list.add("MySQL");
list.add("黑马");
list.add("23");
list.add(23.5);
list.add(false);
System.out.println(list.add('中'));
System.out.println(list);
// 3.给指定索引位置插入元素
list.add(1,"赵敏");
System.out.println(list);
}
}
第二节泛型
package Test;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
//练习题:能够使用泛型约束ArrayList集合操作的数据类型
public class Test {
public static void main(String[] args) {
// ArrayList<String> List = new ArrayList<String>();
ArrayList<String> list=new ArrayList<>();//JDK1.7开始,反省后面的类型申明可以不写
list.add("Java");
list.add("MySQL");
// list.add(23);//会报错
ArrayList<Integer> list2=new ArrayList<>();
list2.add(23);
list2.add(100);
}
}
第三节
package Test;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
//练习题:能够使用泛型约束ArrayList集合操作的数据类型
public class Test {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("java");
list.add("java");
list.add("MySQL");
list.add("MyBatis");
list.add("HTML");
// 1.public E get(int index):获取某个索引位置处的元素值
String e=list.get(3);
System.out.println(e);
// 2.public int size():获取集合的大小(元素个数)
System.out.println(list.size());
// 3.完成集合的遍历
for (int i=0;i<list.size();i++)
{
System.out.println(list.get(i));
}
// 4.public E remover(int index):删除某个索引位置处的元素值,并返回被删除的元素值
System.out.println(list);
String e2=list.remove(2);
System.out.println(e2);
System.out.println(list);
// 5.public boolean remove(Object o):直接删除元素值,删除成功返回true,删除失败返回false
System.out.println(list.remove("MyBatis"));
System.out.println(list);
ArrayList<String> list1 = new ArrayList<String>();
list1.add("java");
list1.add("王宝强");
list1.add("Java");
list1.add("MySQL");
System.out.println(list1);
// 只会删除第一次出现的这个元素值,后面的不删除
System.out.println(list1.remove("java"));
System.out.println(list1);
// 6.public E set(int index,E element):修改某个缩影位置处的元素值
String e3=list1.set(0,"贾乃亮");
System.out.println(e3);
System.out.println(list1);
}
}
第四节:遍历删除
package Test;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
// 目标:学习遍历并删除元素的正确方案。
// 1.创建一个Arraylist集合存储一个班级学生的成绩
ArrayList<Integer> scores = new ArrayList<Integer>();
scores.add(98);
scores.add(77);
scores.add(66);
scores.add(89);
scores.add(79);
scores.add(50);
scores.add(100);
System.out.println(scores);
// 2.把低于80分的成绩从集合中去掉
// scores=[98,77,66,89,79,50,100]
// 0 1 2 3 4 5 6
// 方案一
// for (int i=0; i<scores.size(); i++)
// {
// int score=scores.get(i);
// if (score<80)
// {
//// 这个分数必须删除
// scores.remove(i);
// i--;//删除成功后,必须退一步,保证不会跳过数据
// }
// }
// System.out.println(scores);
// 方案二:从后面到这遍历在删除就可以
for (int i = scores.size()-1;i>=0;i--)
{
int score=scores.get(i);
if (score<80){
scores.remove(i);
}
}
System.out.println(scores);
}
}
第五节:
package Test;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
//案例:集合存储自定义元素并遍历
//需求:定义电影票类(名称,分值,演员),创建3个电影对象,代表三部电影,存入集合并遍历
//《肖申克的救赎》,9.7,罗宾斯
//《霸王别姬》,9.6,张国荣,张丰毅
//《阿甘正传》,9.5,汤姆。汉克斯
public class Test {
public static void main(String[] args) {
// 目标:理解ArrayList集合存储自定义类型的对象
// 1.定义电影类
// 2.创建三个电影对象
Movie m1=new Movie("《肖申克的救赎》",9.7,"罗宾斯");
Movie m2=new Movie("《霸王别姬》",9.6,"张国荣,张丰毅");
Movie m3=new Movie("《阿甘正传》",9.5,"汤姆。汉克斯");
// 3.创建一个电影类型的ArrayList集合,存储三部电影对象
ArrayList<Movie> movies=new ArrayList<>();
movies.add(m1);
movies.add(m2);
movies.add(m3);
System.out.println(movies);
// 4.遍历电影类型的集合中的每个电影对象,访问它的信息即可
for (int i=0; i<movies.size(); i++)
{
// i=0 1 2
Movie m=movies.get(i);
System.out.println("电影名称:"+m.getName());
System.out.println("电影得分:"+m.getScore());
System.out.println("电影主演:"+m.getActor());
System.out.println("---------------------");
}
}
}
package Test;
public class Movie {
// 1。成员变量
private String name;
private double score;
private String actor;
public Movie() {
}
public Movie(String name, double score, String actor) {
this.name = name;
this.score = score;
this.actor = actor;
}
// 2.getter + setter
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public String getActor() {
return actor;
}
public void setActor(String actor) {
this.actor = actor;
}
}
第六节:搜索案例
package Test;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
//案例:学生信息系统:展示数据,并按照学号完成搜索
//学生类信息(学号,姓名,性别,班级)
//测试数据:
//"20180302","叶孤城",23,"护理一班"
//"20180303","东方不败",23,"推拿二班 "
//"20180304","西门吹雪",26,"中药学四班"
//"20180305","梅超风",26,"神经科2班"
public class Test {
public static void main(String[] args) {
// 1.定义学生类
// 2.创建集合存储学生对象,创建学生对象封装学生信息
// 把学生对象添加到集合中去
ArrayList<Student> students = new ArrayList<Student>();
students.add(new Student("20180302","叶孤城",23,"护理一班"));
students.add(new Student("20180303","东方不败",23,"推拿二班 "));
students.add(new Student("20180304","西门吹雪",26,"中药学四班"));
students.add(new Student("20180305","梅超风",26,"神经科2班"));
// 3.遍历这些学生信息展示
System.out.println("学号\t\t\t名称\t\t年龄\t班级");
for (int i = 0; i < students.size(); i++)
{
Student s=students.get(i);
System.out.println(s.getStudyNumber()+"\t"+s.getName()+"\t"+s.getClassName());
}
// 4.定义方法完成按照学号的搜索功能
Scanner scanner = new Scanner(System.in);
while (true){
System.out.println("请您输入学号查询学生对象:");
String studyNumber = scanner.next();
// 5.调用方法查询
Student s=getStudentById(students,studyNumber);
// 6.判断s中是否存在学生对象地址
if (s==null){
System.out.println("对不起,查无此人");
}else {
System.out.println("您查询的学生信息如下:");
System.out.println(s.getStudyNumber()+"\t"+s.getName()+"\t"+s.getAge()+"\t"+s.getClassName());
}
}
}
/**
* 根据学生的学号查询学生对象返回
* @param students 存储全部学生对象的集合
* @param studyNumber 搜索的学生的学号
* @return 学生对象 | null
*/
public static Student getStudentById(ArrayList<Student> students, String studyNumber)
{
// 1.遍历去拿不学生对象
for (int i=0;i<students.size();i++){
Student s=students.get(i);
// 2.询问当前便利的这个学生对象的学号,是否是我们要找的学号
if (s.getStudyNumber().equals(studyNumber)){
// 这个s代表的学生对象,就是为我们要找的:返回它
return s;
}
}
// 查无此人
return null;
}
}
第六节:双色球系统开发
总体目标
代码展示
import java.util.Random;
import java.util.Scanner;
/**
* 业务分析,随机生成一组中奖号码
* 用户输入一组双色球号码
* 判断中奖情况
*/
public class Main {
// 需求:双色球模拟
public static void main(String[] args) {
// 1。随机6个红球号码(1-33,不能重复),随机一个篮球号码(1-16),可以采用数组装起来作为中奖号码
int[] luckNumbers=createLuckNumber();
// printArray(luckNumbers);
// 2,调用一个方法让用户输入7个号码 作为用户选号
int[] userNumbers=userInputNumbers();
// printArray(userNumbers);
// 3.判断中奖情况
judge(luckNumbers, userNumbers);
}
private static void judge(int[] luckNumbers, int[] userNumbers) {
// 判断是否中奖了
// luckNumbers=[12,23,8,16,15,32,9]
// userNumbers=[23,13,18,6,8,33,10]
// 1.定义2个变量分别存储红球命中的个数,以及篮球命中的个数
int redHitNumbers =0;
int blueHitNumbers =0;
// 2.判断红球命中了几个,开始统计
for (int i=0;i<userNumbers.length-1;i++){
for (int j=0;j< luckNumbers.length-1;j++){
// 每次找到了相等了,意味着当前号码命中了
if(userNumbers[i]==luckNumbers[j]){
redHitNumbers++;
break;
}
}
}
// 篮球号码是否命中了
blueHitNumbers=luckNumbers[6]==userNumbers[6]?1:0;
System.out.println("中奖号码是:");
printArray(luckNumbers);
System.out.println("您投注号码是:");
printArray(userNumbers);
System.out.println("您命中了几个红球:"+redHitNumbers);
System.out.println("您是否命中篮球:"+(blueHitNumbers==1?"是":"否"));
// 判断中奖情况了
if (blueHitNumbers==1&&redHitNumbers<3){
System.out.println("恭喜你,中了5元小奖!");
}else if (blueHitNumbers==1&&redHitNumbers==3
||blueHitNumbers==0&&redHitNumbers==4){
System.out.println("恭喜你,中了10元小奖!");
}else if (blueHitNumbers==1&&redHitNumbers==4
||blueHitNumbers==0&&redHitNumbers==5){
System.out.println("恭喜你,中了200元小奖!");
}else if (blueHitNumbers==1&&redHitNumbers==5){
System.out.println("恭喜你,中了10元小奖!");
}else if (blueHitNumbers==0&&redHitNumbers==6){
System.out.println("恭喜你,中了560万超级大奖!");
}else if (blueHitNumbers==1&&redHitNumbers==6){
System.out.println("恭喜你,中了1000万巨奖!");
}else {
System.out.println("感谢您为福利事业做出的贡献!");
}
}
public static void printArray(int[] arr){
for (int i=0;i<arr.length;i++){
System.out.print(arr[i]+"\t");
}
System.out.println();//换行
}
public static int[] userInputNumbers(){
// a.定义一个数组存储7个号码
int[] numbers=new int[7];
// b.让用户录入6个红球号码
Scanner sc=new Scanner(System.in);
for (int i=0;i<numbers.length-1;i++){
System.out.println("请您输入第"+(i+1)+"个红球号码(1-33要求不重复):");
int data=sc.nextInt();
// c,把当前录入的数据存入到数组中去
numbers[i]=data;
}
// d,单独录入一个篮球号码
System.out.println("请您输入篮球号码(1-16):");
numbers[6]=sc.nextInt();
return numbers;
}
public static int[] createLuckNumber(){
// a.定义一个动态初始化的数据,存储7个数字
int[] numbers=new int[7];//[12,23,0,0,0,0,|0]]
// b.遍历数组,为每个位置生成对应的号码,(注意:遍历前6个位置,生成6个不重复的红球号码,范围是1-33)
Random r=new Random();
for (int i=0;i<numbers.length-1;i++){
// 为当前位置找出一个不重复的1-31之间的数字
while (true) {
int data=r.nextInt(33)+1;//1-31=====>(0-32)+1
// c.注意:必须判断当前随机的这个号码之前是否出现过,出现过要重新随机一个,直到不重复为止,才可以存入数组中去
// 定义一个flag变量,默认认为data是没有重复的
boolean flag=true;
for (int j=0;j<i;j++){
if (numbers[j]==data){
// data当前这个数据之前出现过,不能用
flag=false;
break;
}
}
if (flag){
// data这个数据之前没有出现过,可以使用了
numbers[i]=data;
break;
}
}
}
// d,为第7个位置生成一个1-16的号码作为篮球号码
numbers[numbers.length-1]=r.nextInt(16)+1;
return numbers;
}
}