作业
集合练习:
创建一个Person类,添加属性:name,age; 封装这些属性并分别设置各个属性的方法。
根据用户输入的对象个数创建Person对象,接收用户在控制台上输入的每个对象的信息。(注意,将有些Person对象的名字和年龄设置相同)
创建一个Collection集合的对象,将Person对象添加到Collection集合中。
使用迭代器迭代输出该Collecion集合
删除重复的对象。如果姓名和年龄都相同则认为对象重复了。(使用Set会很方便)
List集合练习:
自定义类型User,包含2个属性 name和age
把多个User对象存储到List集合中。
把List集合中的元素按照年龄从小到大排列,如果年龄相等,按照姓名的字母顺序降序排列。
删除List集合中重复的元素。年龄和姓名相同就认为他们相同。
已知有个Worker类(有相应的属性name,age,salary,和showInfo方法),完成下面的要求:
- 创建一个List,在List中增加三个工人信息如下:
| name | age | salary | | :--- | :--- | :--- | | zhang3 | 18 | 3000 | | li4 | 25 | 3500 | | wang5 | 22 | 3200 |
在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300 3、删除wang5 的信息
利用for 循环遍历,打印List 中所有工人的信息
利用迭代遍历,对List 中所有的工人调用showInfo方法。
为Worker 类添加equals 方法。
现在给出两个集合:
集合A:1,7,9,11,13,15,17,19
集合b:2,4,6,8,10
两个集合合并为集合c,按升序排列。
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数), 凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
要求:用集合解决问题。
=======================================================
HashSet集合练习:(1)创建一个Employee类,添加属性:name,age,salary; 封装这些属性并分别设置各个属性的get和set方法。(2)在Employee 类基础上,为Employee 类添加相应的代码,使得Employee 对象能正确放入HashSet 中:如果年龄和姓名相同就认为他们为同一个对象。并编写相应的测试代码。例如:雇员的基本信息如下:
- | 姓名 | 年龄 | 工资 | | :--- | :--- | :--- | | Tom | 18 | 1500 | | Jack | 18 | 1500 | | Mike | 18 | 1600 | | Marry | 17 | 2000 |
(Map练习)已知某学校的教学课程内容安排如下:
)完成下列要求:1) 使用一个Map,以老师的名字作为键,以老师教授的课程名作为值,表示上述 课程安排。2) 增加了一位新老师Allen 教JDBC3) Lucy 改为教CoreJava4) 遍历Map,使用两种迭代方式输出所有的老师及老师教授的课程。
(Map练习)下图是,截止到2009年,世界杯局部年份和夺冠国家。要求:在键盘输入年份,输出夺冠国家。
统计一个指定的字符串中每个字符出现的个数。把结果存入到一个Map中。(key 为某个字符,value为这个字符出现的次数)。
package yztc.lin.work4;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Set;
public class Main {
public static void main(String[] args) {
String str = "asdfgasdfgh";
HashMap<Character, Integer> map = new HashMap<>();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
Integer oldVal = map.get(c);
map.put(c, oldVal == null ? 1 : (oldVal + 1));
}
Set<Entry<Character, Integer>> entrySet = map.entrySet();
for (Entry<Character, Integer> entry : entrySet) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
}
写一个可以给斗地主玩家随机发牌的程序。a:牌可以随机发给三个玩家b:在控制台打印每个玩家的牌。c:对每个玩家手中的牌按照大小排序。
牌的花色:"♠", "♥", "♣", "♦"
思路:创建一个容器存储所有的牌,再创建三个容器分别表示三个用户的牌,三个用户轮流从第一个容器中取牌,剩下三张为底牌。把大王和小王也算进去。可以封装一个类表示牌
package yztc.lin.work5;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
public class Poker {
public static Poker newPoker() {
return new Poker();
}
// ♦3
private String[] colors = { "♦", "♣", "♥", "♠" };
private String[] numbers = { "3", "4", "5", "6", "7", "8", "9", "0", "J", "Q", "K", "A", "2" };
private LinkedList<Node> list = new LinkedList<>();// 扑克的54张牌
public static class Node implements Comparable<Node> {
String flowerColor;
String number;
int grade;
public Node(String flowerColor, String number, int grade) {
this.flowerColor = flowerColor;
this.number = number;
this.grade = grade;
}
@Override
public String toString() {
return flowerColor + number;
}
@Override
public int compareTo(Node o) {
return this.grade - o.grade;
}
}
private Poker() {
// ♠,♥,♣,♦
// int k = 0;
for (int j = 0; j < numbers.length; j++) {// 0 1 2 3 4 5 6 7 8 9 10
for (int i = 0; i < colors.length; i++) {// 0 1 2 3
list.add(new Node(colors[i], numbers[j], j * colors.length + i));
// System.out.println(j * colors.length + i);
}
}
list.add(new Node("小", "王", 99));
list.add(new Node("大", "王", 100));
}
public void show() {
System.out.println(list);
}
/**
* 给三个玩家发牌。
*
* @param p1
* @param p2
* @param p3
* @return 返回底牌
*/
public List<Node> faPai(List<Node> p1, List<Node> p2, List<Node> p3) {
Collections.shuffle(list);
for (int i = 0; i < 17; i++) {
p1.add(list.removeFirst());
p2.add(list.removeFirst());
p3.add(list.removeFirst());
}
return list;
}
}
package yztc.lin.work5;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import yztc.lin.work5.Poker.Node;
public class Main {
public static void main(String[] args) {
Poker newPoker = Poker.newPoker();
ArrayList<Node> p1 = new ArrayList<>();
ArrayList<Node> p2 = new ArrayList<>();
ArrayList<Node> p3 = new ArrayList<>();
List<Node> diPai = newPoker.faPai(p1, p2, p3);
Collections.sort(p1);
Collections.sort(p2);
Collections.sort(p3);
System.out.println("player1:" + p1);
System.out.println("player2:" + p2);
System.out.println("player3:" + p3);
System.out.println("底牌为:" + diPai);
}
}