作业

  1. 集合练习:

    1. 创建一个Person类,添加属性:name,age; 封装这些属性并分别设置各个属性的方法。

    2. 根据用户输入的对象个数创建Person对象,接收用户在控制台上输入的每个对象的信息。(注意,将有些Person对象的名字和年龄设置相同)

    3. 创建一个Collection集合的对象,将Person对象添加到Collection集合中。

    4. 使用迭代器迭代输出该Collecion集合

    5. 删除重复的对象。如果姓名和年龄都相同则认为对象重复了。(使用Set会很方便)

  2. List集合练习:

    1. 自定义类型User,包含2个属性 name和age

    2. 把多个User对象存储到List集合中。

    3. 把List集合中的元素按照年龄从小到大排列,如果年龄相等,按照姓名的字母顺序降序排列。

    4. 删除List集合中重复的元素。年龄和姓名相同就认为他们相同。

  3. 已知有个Worker类(有相应的属性name,age,salary,和showInfo方法),完成下面的要求:

    1. 创建一个List,在List中增加三个工人信息如下:

    | name | age | salary | | :--- | :--- | :--- | | zhang3 | 18 | 3000 | | li4 | 25 | 3500 | | wang5 | 22 | 3200 |

    1. 在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300 3、删除wang5 的信息

    2. 利用for 循环遍历,打印List 中所有工人的信息

    3. 利用迭代遍历,对List 中所有的工人调用showInfo方法。

    4. 为Worker 类添加equals 方法。

  4. 现在给出两个集合:

    • 集合A:1,7,9,11,13,15,17,19

    • 集合b:2,4,6,8,10

    两个集合合并为集合c,按升序排列。

  5. 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数), 凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

    要求:用集合解决问题。

=======================================================

HashSet集合练习:(1)创建一个Employee类,添加属性:name,age,salary; 封装这些属性并分别设置各个属性的get和set方法。(2)在Employee 类基础上,为Employee 类添加相应的代码,使得Employee 对象能正确放入HashSet 中:如果年龄和姓名相同就认为他们为同一个对象。并编写相应的测试代码。例如:雇员的基本信息如下:

  1. | 姓名 | 年龄 | 工资 | | :--- | :--- | :--- | | Tom | 18 | 1500 | | Jack | 18 | 1500 | | Mike | 18 | 1600 | | Marry | 17 | 2000 |
  2. (Map练习)已知某学校的教学课程内容安排如下:)完成下列要求:1) 使用一个Map,以老师的名字作为键,以老师教授的课程名作为值,表示上述 课程安排。2) 增加了一位新老师Allen 教JDBC3) Lucy 改为教CoreJava4) 遍历Map,使用两种迭代方式输出所有的老师及老师教授的课程。

  3. (Map练习)下图是,截止到2009年,世界杯局部年份和夺冠国家。要求:在键盘输入年份,输出夺冠国家。

  4. 统计一个指定的字符串中每个字符出现的个数。把结果存入到一个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());
        }

    }

}
  1. 写一个可以给斗地主玩家随机发牌的程序。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);
       }
   }

results matching ""

    No results matching ""