第一题
创建一个StudentDao类,使用ArrayList存储学生,实现以下功能:
- 创建一个Student (JavaBean)类,属性自定。
- 通过一个方法:public void insert(Student stu),把多个学生对象存入ArrayList 中。
- 通过一个方法:public void list(),将ArrayList中所学生信息显示出来,一个学生信息显示一行。
- 编写一个方法:public Student delete (String studentNo) 根据提供的学号将学生对象从列表中删除,本方法返回删除的学生对象。注意参数为学号。
studentDao.class
public class StudentDao {
List<Student> students=new ArrayList();
public void insert(Student student) {
students.add(student);
}
public void list() {
for (Student student : students) {
System.out.println("姓名:"+student.getName()+"\t学号:"+student.getNum()+"\t年龄:"+student.getAge());
}
}
public Student delete(int num) {
for (int i = 0; i < students.size(); i++) {
if (num == students.get(i).getNum()) {
Student b= students.remove(i);
return b;
}
}
return null;
}
}
Student.class
public class Student {
private String name;
private int num;
private int age;
public Student(String name, int num, int age) {
this.name = name;
this.num = num;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString() {
return name+num+age;
}
}
Test.class
public class Test {
public static void main(String[] args) {
StudentDao studentDao = new StudentDao();
studentDao.insert(new Student("张三",1,18));
studentDao.insert(new Student("李四",2,19));
studentDao.insert(new Student("王五",3,20));
studentDao.insert(new Student("赵六",4,21));
studentDao.list();
System.out.println("--------------------------------");
Student a=studentDao.delete(2);
System.out.println("删除的对象\t姓名:"+a.getName()+"\t学号:"+a.getNum()+"\t年龄:"+a.getAge());
studentDao.list();
}
}
第二题
编写一个类:MyStack(栈FILO)基于LinkedList实现一个栈(FILO先进后出或者说后进先出)的功能,如下图:
class MyStack {
public void push(Object elt):入栈
public Object pop():出栈要将元素从栈中移出
public Object peek():查看栈顶的元素,但不从栈中移出
}
MyStack.class
public class MyStack {
LinkedList filo=new LinkedList();
public void push(Object elt) {
filo.add(elt);
}
public Object pop() {
Object e = filo.remove(filo.size()-1);
return e;
}
public Object peek() {
return filo.getFirst();
}
public void display() {
for (int i = 0; i < filo.size(); i++) {
System.out.print(filo.get(i)+"\t");
}
System.out.println();
}
}
Test.class
public class Test {
public static void main(String[] args) {
MyStack myStack = new MyStack();
myStack.push(2);
myStack.push(3);
myStack.push(4);
myStack.push("abc");
System.out.print("遍历元素:\t");
myStack.display();
System.out.println("栈顶元素:"+myStack.peek());
Object a= myStack.pop();
System.out.println("出栈的元素:"+a);
System.out.print("出栈:\t");
myStack.display();
Object b=myStack.pop();
System.out.println("出栈的元素:"+b);
System.out.print("出栈:\t");
myStack.display();
}
}
第三题
编写一个类:Queue(队列FIFO), 用LinkedList实现一个队列(FIFO先进先出)的功
LinkedList部分常用方法:
-
addFirst(E e) 将指定元素插入此列表的开头。
-
addLast(E e) 将指定元素添加到此列表的结尾
-
getFirst() 返回此列表的第一个元素
-
getLast()返回此列表的最后一个元素
-
removeFirst() 移除并返回此列表的第一个元素。
-
removeLast()移除并返回此列表的最后一个元素。
Queue.class
public class Queue {
LinkedList fifo=new LinkedList();
public void push(Object elt) {
fifo.add(elt);
}
public Object pop() {
Object e=fifo.remove(0);
return e;
}
public Object peek() {
return fifo.getFirst();
}
public void display() {
for (int i = 0; i < fifo.size(); i++) {
System.out.print(fifo.get(i)+"\t");
}
System.out.println();
}
}
Test.class
public class Test {
public static void main(String[] args) {
Queue queue = new Queue();
queue.push(2);
queue.push(3);
queue.push(4);
queue.push("abc");
System.out.print("遍历成员:");
queue.display();
System.out.println("栈顶的元素:"+queue.peek());
Object a=queue.pop();
System.out.println("出栈的元素:"+a);
System.out.print("出栈后的成员:");
queue.display();
Object b=queue.pop();
System.out.println("出栈的元素:"+b);
System.out.print("出栈后的成员:");
queue.display();
}
}
Map练习
第一题
使用HashMap存放几个学生的信息,用学号作为键,最后将所有的学生通过迭代器Iterator遍历出来。分别使用以下两种迭代方式输出学生信息。
- 通过迭代key
- 通过迭代Entry
HasMap.class
public class HasMap {
public static void main(String[] args) {
HashMap<Integer, Student> map = new HashMap<>();
map.put(1, new Student("jack", 1, 18));
map.put(2, new Student("andy", 2, 19));
map.put(3, new Student("james", 3, 20));
//第一种方式
Set<Integer> keySet = map.keySet();
for (Integer integer : keySet) {
System.out.println(map.get(integer));
}
System.out.println("-----------");
//第二种方式
Set<Map.Entry<Integer, Student>> entries = map.entrySet();
for (Map.Entry<Integer, Student> entry : entries) {
Map.Entry o=(Map.Entry)entry;
System.out.println(o);
}
}
}
Student.class
public class Student {
private String name;
private int num;
private int age;
public Student(String name, int num, int age) {
this.name = name;
this.num = num;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString() {
return name+num+age;
}
}
第二题
将第4题HashMap中的学生“小明”从HashMap中删除
Student s……
Map.remove(s.getNo( ));
HashMapRemove.class
public class HashMapRemove {
public static void main(String[] args) {
Student a= new Student("jack", 1, 18);
Student b=new Student("andy", 2, 19);
Student c=new Student("james", 3, 20);
HashMap<Integer, Student> map = new HashMap<>();
map.put(1,a);
map.put(2, b);
map.put(3, c);
Integer key = null;
Student[] students = {a, b, c};
for (Student student : students) {
if (student.getName().equals("andy")) {
key=student.getNum();
}
}
//第一种方式
Set<Integer> keySet = map.keySet();
for (Integer integer : keySet) {
System.out.println(map.get(integer));
}
System.out.println("-----------");
map.remove(key);
//第二种方式
Set<Map.Entry<Integer, Student>> entries = map.entrySet();
for (Map.Entry<Integer, Student> entry : entries) {
Map.Entry o=(Map.Entry)entry;
System.out.println(o);
}
}
}
Student.class
public class Student {
private String name;
private int num;
private int age;
public Student(String name, int num, int age) {
this.name = name;
this.num = num;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString() {
return name+num+age;
}
}
第三题
编写一个类定义一个方法:showProps()将message.properties属性文件的键/值对信息显示出来
提示:使用ResourceBundle类读取属性文件
ResourceBundleDemo.class
public class ResourceBundleDemo {
public static void showProps() {
ResourceBundle bundle = ResourceBundle.getBundle("message");//放在src目录下
String s = bundle.getString("user.name");
System.out.println(s);
String s1 = bundle.getString("user.age");
System.out.println(s1);
String s2 = bundle.getString("user.password");
System.out.println(s2);
}
public static void main(String[] args) {
ResourceBundleDemo.showProps();
}
}
message.properties //放在src目录下
user.name=用户名
user.age=用户年龄
user.password=密码