4.1学习总结 拼图小游戏+集合进阶
图形化界面:GUI
创建一个新界面:
模板:
import javax.swing.*;
public class test {public static void main(String[] args) {//创建一个主界面JFrame gameJframe = new JFrame();gameJframe.setSize(580,600);//设置大小先宽后高。gameJframe.setVisible(true);//设置窗口可见//true可见,false不可见。}
}
添加图片。
黑框下的电影查询系统
电影定义
public class movie {private int id;private String name;private String actor;public movie(int id,String name,String actor) {this.id = id;this.name = name;this.actor = actor;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getActor() {return actor;}public void setActor(String actor) {this.actor = actor;}
}
界面设计
public class movieoperator {private movie[] movies;public movieoperator(movie[] movies){this.movies=movies;}public void findAllmovie(){for(int i=0;i<movies.length;i++){movie m=movies[i];System.out.println("电影编号是:"+m.getId());System.out.println("电影名称是:"+m.getName());}}public void findbyid(int id){for(int i=0;i<movies.length;i++){movie m=movies[i];if(m.getId()==id){System.out.println("电影编号是:"+m.getId());System.out.println("电影名称是:"+m.getName());System.out.println("电影演员是:"+m.getActor());return;}}System.out.println("没有找到该电影");}
}
运行
import java.util.Scanner;
// 定义 Movie 类public class system{public static void main(String[]args){System.out.println("---欢迎来到电影管理系统---");System.out.println("操作功能请选择1、2或者3");System.out.println("1.查询所有电影");System.out.println("2.根据电影编号查询电影");System.out.println("3.退出系统");movie[] movies = {new movie(1, "血观音", "文淇"),new movie(2, "风犬少年的天空", "张婧仪"),new movie(3, "我要我们在一起", "张婧仪")};Scanner sc = new Scanner(System.in);movieoperator mo = new movieoperator(movies);while(true){System.out.println("请输入您的选择:");int choice = sc.nextInt();if(choice==1){mo.findAllmovie();}else if(choice==2){System.out.println("请输入电影编号:");int id = sc.nextInt();mo.findbyid(id);}else if(choice==3){System.out.println("感谢您的使用,再见!");break;}else{System.out.println("您的输入有误,请重新输入!");}}}
}
集合进阶:
集合的体系结构:
list系列集合:添加的元素是有序、可重复、有索引
set系列集合:添加的元素是无序,不重复,无索引
Collection:接口
是单列集合的祖宗接口,功能是全部单列集合都可以继承使用
元素的对象:元素的具体内容。
contains()方法比较的是地址值。
如果想让比较的是内容,那么需要重写equals()方法
迭代器遍历:迭代器不依赖索引。
迭代器遍历示例代码:
import java.util.ArrayList;
import java.util.*;
public class test {public static void main(String[] args) {Collection<String> coll=new ArrayList<>();coll.add("aa");coll.add("bb");coll.add("cc");coll.add("dd");Iterator<String> it=coll.iterator();while(it.hasNext()){String str=it.next();System.out.println(str);}}
}
1.没有这个元素异常。
next方法:获取当前指向的元素,并且移动迭代器里面的指针。
增强for遍历:
示例代码:
import java.util.ArrayList;
import java.util.*;
public class test {public static void main(String[] args) {Collection<String> coll=new ArrayList<>();coll.add("aa");coll.add("bb");coll.add("cc");coll.add("dd");for(String s:coll){//s就是一个第三方变量,在循环的过程中依次表示集合中的每一个数据System.out.println(s);}}
}
s仅仅是个第三方变量,不会改变集合中原本的数据。
Lambda表达式遍历:
foreach()方法底层就是一个循环遍历,依次得到集合中的元素。
import java.util.ArrayList;
import java.util.*;
import java.util.function.Consumer;
public class test {public static void main(String[] args) {Collection<String> coll=new ArrayList<>();coll.add("aa");coll.add("bb");coll.add("cc");coll.add("dd");//匿名内部类的形式/*coll.forEach(new Consumer<String>(){@Overridepublic void accept(String s) {System.out.println(s);}});*///Lambda表达式的形式coll.forEach(s-> System.out.println(s));}
}
总结sum