1. 第一题

    package net.mindview.holding.test1;
    
    import java.util.ArrayList;
    import java.util.List; /**
    * 沙鼠
    * @author samsung
    *
    */
    public class Gerbil {
    static int counter;
    int gerbilNumber; public Gerbil(){
    this.gerbilNumber = counter ++;
    } public String hop(){ return "沙鼠的号码:"+gerbilNumber + ",正在跳跃";
    } public static void main(String[] args) {
    List<Gerbil> list = new ArrayList<Gerbil>();
    list.add(new Gerbil());
    list.add(new Gerbil());
    list.add(new Gerbil());
    list.add(new Gerbil());
    for(Gerbil g: list){
    System.out.println(g.hop());
    }
    }
    }

    运行结果

    沙鼠的号码:,正在跳跃
    沙鼠的号码:,正在跳跃
    沙鼠的号码:,正在跳跃
    沙鼠的号码:,正在跳跃
  2. 第二题
    package net.mindview.holding.test2;
    
    import java.util.HashSet;
    import java.util.Set; public class SimpleCollection { public static void main(String[] args) {
    Set<Integer> c = new HashSet<Integer>();
    for(int i = ; i < ; i++){
    c.add(i);
    }
    for(Integer i: c){
    System.out.print(i + ",");
    }
    } }
  3. 第三题
    package net.mindview.holding.test3;
    
    import java.util.ArrayList;
    import java.util.List; /**
    * 选择器
    */
    interface Selector {
    //是否结束
    boolean end();
    //当前
    Object current();
    //下一个
    void next();
    } /**
    * 顺序
    */
    public class Sequence {
    //数组是有限制的,而集合时无限制的.
    //private Object[] items;
    private List<Object> items;
    private int next = ;
    //定义数组的个数
    public Sequence(){
    items = new ArrayList<Object>();
    }
    //添加
    public void add(Object x){
    items.add(x);
    } //内部类--顺序选择器
    private class SequenceSelector implements Selector {
    //选择器最开始指向第一个元素
    private int i = ;
    @Override
    public boolean end() {
    return i == (items.size());
    }
    /**
    * 新增方法: 在内部类中引用外部类
    */
    public Sequence outer(){
    return Sequence.this;
    } @Override
    public Object current() {
    return items.get(i);
    } @Override
    public void next() {
    if(i<items.size()){
    i++;
    }
    }
    } public Selector selector() {
    return new SequenceSelector();
    } public static void main(String[] args) {
    Sequence s = new Sequence();
    for(int i=; i<; i++){
    s.add("对象"+i);
    }
    Selector selector = s.selector();
    while(!selector.end()){
    System.out.print(selector.current());
    selector.next();
    }
    } }

    结果

    对象0对象1对象2对象3对象4对象5对象6对象7对象8对象9

    分析: 这个案例的重点是, 数组瘦受限制的, 集合是没有元素个数限制的。 因此,可以任意添加元素的意思就是:将数组替代为集合。

  4. 第四题
    package net.mindview.holding.test4;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collection;
    import java.util.HashSet;
    import java.util.LinkedHashSet;
    import java.util.LinkedList;
    import java.util.TreeSet;
    class MoiveNameGenerator {
    String[] moives = {"Snow White", "Star Wars", "White Princple", "Dream","My Mother", "The Forest", "My Grandpa"};
    int next;
    public String next(){
    String moive = moives[next];
    //电影名用完之后, 循环到这个字符列表的开始处
    next = (next+) % moives.length;
    return moive;
    } }
    public class MoiveGenerator {
    MoiveNameGenerator moiveNameGenerator = new MoiveNameGenerator();
    public String[] fill(String[] arr){
    for(int i=; i<arr.length; i++){
    arr[i] = moiveNameGenerator.next();
    }
    return arr;
    } public Collection fill(Collection col){
    for(int i=; i<; i++){
    col.add(moiveNameGenerator.next());
    }
    return col;
    } public static void main(String[] args) {
    MoiveGenerator moiveGenerator = new MoiveGenerator();
    System.out.println(Arrays.toString(moiveGenerator.fill(new String[])));
    System.out.println(moiveGenerator.fill(new ArrayList<String>()));
    System.out.println(moiveGenerator.fill(new LinkedList<String>()));
    System.out.println(moiveGenerator.fill(new HashSet<String>()));
    System.out.println(moiveGenerator.fill(new LinkedHashSet<String>()));
    System.out.println(moiveGenerator.fill(new TreeSet<String>()));
    }
    }

    运行结果:

    [Snow White, Star Wars, White Princple, Dream, My Mother]
    [The Forest, My Grandpa, Snow White, Star Wars, White Princple]
    [Dream, My Mother, The Forest, My Grandpa, Snow White]
    [My Mother, Star Wars, The Forest, Dream, White Princple]
    [My Grandpa, Snow White, Star Wars, White Princple, Dream]
    [My Grandpa, My Mother, Snow White, Star Wars, The Forest]
  5. dff
  6. af
  7. a
  8. fa
  9. fda
  10. sf
  11. af
  12. as
  13. fa
  14. fa
  15. 栈在编程语言中,经常用来对表达式求值。请使用net.mindview.util.Stack对下面的表达式求值。 其中“+”表示将后面的字母压入栈,“-”表示将栈顶的字母押出栈。并打印他们。

    package net.mindview.holding;
    
    import java.util.LinkedList;
    
    /**
    * 模拟栈
    */
    public class Stack<T> {
    private LinkedList<T> storage = new LinkedList<T>(); //推入
    public void push(T v){
    storage.addFirst(v);
    } public T peek(){
    return storage.getFirst();
    } //取出
    public T pop(){
    return storage.removeFirst();
    } public boolean empty(){
    return storage.isEmpty();
    } public String toString(){
    return storage.toString();
    } }
    package net.mindview.holding.test15;
    
    import java.util.Stack;
    
    /**
    * 栈在编程语言中,经常用来对表达式求值。请使用net.mindview.util.Stack对下面的表达式求值。
    * 其中“+”表示将后面的字母压入栈,“-”表示将栈顶的字母押出栈。并打印他们。
    * @author samsung
    *
    */
    public class Test15 {
    Stack<Character> stac = new Stack<Character>();
    //计算
    public void eval(String str){
    char[] chars = str.toCharArray();
    for(int i=; i<chars.length; i++){
    char c = chars[i++];
    //遇到+号把字符入栈
    switch (c){
    case '+':
    System.out.println("入栈:"+stac.push(chars[i]));
    break;
    case '-':
    System.out.println("出栈:"+stac.pop());
    break;
    }
    }
    } public static void main(String[] args) {
    Test15 t = new Test15();
    String str = "+U+n+c---+e+r+t---+a-+i-+n+t+y---+ -+r+u--+l+e+s--";
    t.eval(str);
    }
    }
  16. fda
  17. fa
  18. fa
  19. dfa
  20. fa
  21. df
  22. asfd
  23. afa
  24. fa
  25. fa
  26. fa
  27. 二十七题
    package net.mindview.holding.test27;
    
    import java.util.LinkedList;
    import java.util.Queue; //消息
    class Command {
    String str;
    public Command(String str){
    this.str = str;
    }
    public void operation(){
    System.out.println(str);
    }
    } //生产者
    class Producter{
    //生产者生成消息
    public Queue<Command> produce(Queue<Command> qc){
    qc.offer(new Command("A"));
    qc.offer(new Command("AB"));
    qc.offer(new Command("ABC"));
    qc.offer(new Command("VFA"));
    qc.offer(new Command("SDA"));
    return qc;
    }
    } //消费者
    class Customer {
    //消费者消费消息
    public void custom(Queue<Command> queue){
    while(queue.peek() != null){
    queue.remove().operation();
    }
    }
    } public class Test27 {
    public static void main(String[] args) {
    Queue<Command> qc = new LinkedList<Command>();
    Producter producter = new Producter();
    Queue<Command> qcc = producter.produce(qc);
    new Customer().custom(qcc); }
    }

    运行结果:

    A
    AB
    ABC
    VFA
    SDA
  28. fa
  29. 第三十一题
    package net.mindview.holding.test31;
    
    import java.util.Iterator;
    import java.util.Random; //形状
    class Shape {
    public void draw() {
    } public void erase() {
    }
    } // 圆形
    class Cycle1 extends Shape { @Override
    public void draw() {
    System.out.println("draw cycle");
    } @Override
    public void erase() {
    System.out.println("erase cycle");
    } } class Square extends Shape {
    @Override
    public void draw() {
    System.out.println("draw Square");
    } @Override
    public void erase() {
    System.out.println("draw Square");
    }
    } // 矩形
    class Triangle extends Shape {
    @Override
    public void draw() {
    System.out.println("draw Triangle");
    } @Override
    public void erase() {
    System.out.println("draw Triangle");
    }
    } // 梯形
    class Trapezoid extends Shape {
    @Override
    public void draw() {
    System.out.println("draw Trapezoid");
    } @Override
    public void erase() {
    System.out.println("draw Trapezoid");
    }
    } class RandomShapeFactory implements Iterable<Shape> {
    Random random = new Random(); private final int quantity; public RandomShapeFactory(int quantity) {
    this.quantity= quantity;
    } // 下面画什么形状呢
    public Shape nextShape() {
    switch (random.nextInt()) {
    default:
    case :
    return new Cycle1();
    case :
    return new Square();
    case :
    return new Triangle();
    case :
    return new Trapezoid();
    }
    } @Override
    public Iterator<Shape> iterator() {
    return new Iterator<Shape>() {
    private int count = ; @Override
    public boolean hasNext() {
    return count < quantity;
    } @Override
    public Shape next() {
    ++count;
    return nextShape();
    } @Override
    public void remove() { }
    };
    }
    } public class Shapes {
    public static void main(String[] args) {
    RandomShapeFactory rd = new RandomShapeFactory();
    for (Shape s : rd) {
    System.out.println(s.getClass().getSimpleName());
    } } }

    运行结果

    Triangle
    Square
    Triangle
    Cycle1
    Cycle1
    Triangle
    Cycle1
    Square
    Triangle
  30. f
  31. afda

java编程思想第四版第十一章习题的更多相关文章

  1. java编程思想第四版第十一章总结

    1. 容器类被分为两类:Collection和Map Collection是一个接口:包括: List接口: ArrayList:按照被插入顺序保存元素, 查询快, 增删改慢 LinkedList:按 ...

  2. java编程思想第四版第六章习题

    (略) (略) 创建两个包:debug和debugoff,他们都包含一个相同的类,该类有一个debug()方法,第一个版本显示发送给控制台的String参数,而第二版本什么也不做,使用静态import ...

  3. java编程思想第四版第五章习题

    创建一个类, 它包含一个未初始化的String引用.验证该引用被Java初始化成了null package net.mindview.initialization; public class Test ...

  4. java编程思想第四版第七章习题

    (略) (略) (略) (略) 创建两个带有默认构造器(空参数列表)的类A和类B.从A中继承产生一个名为C的新,并在C内创建一个B类的成员.不要给C编写构造器.创建一个C类的对象并观察其结果. pac ...

  5. java编程思想第四版第十三章字符串 习题

    fas 第二题 package net.mindview.strings; import java.util.ArrayList; import java.util.List; /** * 无限循环 ...

  6. Java编程思想第四版*第七章*个人练习

    欢迎加群:239063848 成团的笔记:该组仅用于技术共享和交流,问题和答案公布 潘基聊天.禁止广告.禁止招聘-- 练习1:(2)创建一个简单的类.第二个类中,将一个引用定义为第一个类的对象.运用惰 ...

  7. java编程思想第四版第六章总结

    1. 代码重构 为什么f要代码重构 第一次代码不一定是完美的, 总会发现更优雅的写法. 代码重构需要考虑的问题 类库的修改不会破坏客户端程序员的代码. 源程序方便扩展和优化 2. 包 创建一个独一无二 ...

  8. java编程思想 第四版 第六章 个人练习

    欢迎加群:239063848 进群须知:本群仅用于技术分享与交流.问题公布与解答 禁止闲聊.非诚勿扰 练习1:(1)在某个包中创建一个类,在这个类所处的包的外部创建该类的一个实例. import mi ...

  9. java编程思想第四版第十三章字符串 总结

    1. String和StringBulider的使用 通过书中介绍, 我们得知如下结论: 当使用+连接符将字符串进行拼接的时候, 编译器会进行自动优化为使用StringBuilder连接字符串. 当在 ...

随机推荐

  1. 分布式FastDFS集群部署

    FastDFS FastDFS的作者余庆在其 GitHub 上是这样描述的:"FastDFS is an open source high performance distributed f ...

  2. POJ 1258 Agri-Net(Prim)

    题目网址:http://poj.org/problem?id=1258 题目: Agri-Net Time Limit: 1000MS   Memory Limit: 10000K Total Sub ...

  3. SQL手工注入方法

    SQL手工注入漏洞测试(MySQL数据库) 的靶场练习   流程与方法 注意:加粗部分给重点 查询数据库名http://219.153.49.228:46939/new_list.php?id=22 ...

  4. scrollWidth、clientWidth 和 offsetWidth

    scrollWidth:对象的实际内容宽度,不包括边线宽度,会随对象中内容超过可视区而变大. clientWidth:对象内容的可视区的宽度,不包括边线宽度,会随对象显示大小的变化而变化. offse ...

  5. 阿里六面,挂在hrg,我真的不甘心!

    前言最近跟一位朋友聊天,福报场-阿里是大部分程序员的梦想.这位老哥梦想进入阿里很久了,连续两年面试阿里不同bu,有几次是技术面挂,最冤的一次是技术6面了,连P10大老板都面了,但是挂在了hrg. 我以 ...

  6. python dict(字典)

    补充知识点1: 数据类型的划分:可变数据类型.不可变数据类型 可变数据类型:     元组,bool,int,str      --可哈希 不可变数据类型:  list,dict,set        ...

  7. egg-sequelize --- nodejs

    项目 egg + sequelize + mysql2 项目结构 配置 安装模块 npm install --save egg-sequelize npm install --save egg-cor ...

  8. 前端开发之VSCode扩展

    1.Chinese (Simplified) Language Pack for Visual Studio Code——中文语言包 2.Beautify——代码格式化工具 3.HTML Snippe ...

  9. 一个自动管理项目的Makefile(C语言)

    Linux 是所有嵌入式软件工程师绕不过去的坎, makefile 是在Linux系统中绕不过去的坎. 花了几天时间初步学习和了解了makefile 的作用以及功能,并且制作了一个通用型的makefi ...

  10. 大公司喜欢问的Java集合类面试题

    Collection Collection是基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同的元素而另一 ...