这是第十一章最后一节,之后我会做前11章节的回顾(按着目录捋)

题目27-32,其中30-32因为我没有源代码,所以我贴的官网答案。

编译器:IDEA

27.写一个称为Command的类,它包含一个String域和一个显示该String的operation()方法。写第二类,它具有一个使用Command对象来填充一个Queue并返回这个对象的方法。将填充后的Queue传递给第三个类的一个方法,该方法消耗掉Queue中的对象,并调用它们的operation()方法。

package job;
import java.lang.reflect.Array;
import java.util.*;
import java.util.Map.Entry;
class Command{String a;public void Operation(){System.out.println(a);}
}
class A {public Queue<Command> a = new LinkedList<>(Arrays.asList(new Command(), new Command()));
}
class B {void removea(Queue<Command> a){for(Command b:a){b.Operation();System.out.println(a.remove());}}
}
public class Main {public static void main(String[] args) {A a=new A();B b=new B();b.removea(a.a);}
}

28.用由java.util.Random创建的Double值填充一个PriorityQueue(用offer())方法,然后使用poll()移除并显示它们。

package job;
import java.lang.reflect.Array;
import java.util.*;
import java.util.Map.Entry;
public class Main {public static void main(String[] args) {Random rand=new Random();PriorityQueue<Double>a=new PriorityQueue<>();a.offer(rand.nextDouble());a.offer(rand.nextDouble());while (a.peek()!=null)System.out.println(a.poll()+" ");}
}

29.创建一个继承自Object的简单类,它不包含任何成员,展示你不能将这个类的多个示例成功地添加到一个PriorityQueue中。这个问题将在第17章中详细解释。

package job;
import java.lang.reflect.Array;
import java.util.*;
class A extends Object{}
public class Main {public static void main(String[] args) {PriorityQueue<A>a=new PriorityQueue<>();a.offer(new A());a.offer(new A());}
}

报错!

30.修改CollectionSequeuece.java,使其不要继承AbstractCollection,而是实现Collection。


//: holding/CollectionSequence.javaimport typeinfo.pets.*;import java.util.*;class InterfaceVsIterator {public static void display(Iterator<Pet> it) {while(it.hasNext()) {Pet p = it.next();System.out.print(p.id() + ":" + p + " ");}System.out.println();}public static void display(Collection<Pet> pets) {for(Pet p : pets)System.out.print(p.id() + ":" + p + " ");System.out.println();}  }public class Ja11_12_30implements Collection<Pet> {private Pet[] pets = Pets.createArray(8);public int size() { return pets.length; }public Iterator<Pet> iterator() {return new Iterator<Pet>() {private int index = 0;public boolean hasNext() {return index < pets.length;}public Pet next() { return pets[index++]; }public void remove() { // Not implementedthrow new UnsupportedOperationException();}};}public boolean add(Pet p){throw new UnsupportedOperationException();}public boolean addAll(Collection<? extends Pet> c){throw new UnsupportedOperationException();} public void clear() { if(this.size() != 0)for(Pet p : pets)p = null;}public boolean retainAll(Collection<?> c) { throw new UnsupportedOperationException();}public boolean removeAll(Collection<?> c) { throw new UnsupportedOperationException();}public boolean contains(Object o) {    throw new UnsupportedOperationException();}public boolean isEmpty() {   return (this.size() == 0) ? true : false;}public boolean containsAll(Collection<?> c) { throw new UnsupportedOperationException();}public boolean remove(Object o) { throw new UnsupportedOperationException();}public Object[] toArray() {return pets;}public <T> T[] toArray(T[] a) {throw new UnsupportedOperationException();}public static void main(String[] args) {Ja11_12_30 c = new Ja11_12_30();InterfaceVsIterator.display(c);InterfaceVsIterator.display(c.iterator());}} /* Output:*///:~

31.修改polymorphism/shape/RandomShapeGenerator.java,使其成为一个Iterable。你需要添加一个接受元素数量为参数的构造器,这个数量是指在停止之前,你想用迭代器生成的元素的数量。验证这个程序可以工作。


/* Modify polymorphism/shape/RandomShapeGenerator.java to make it* Iterable. You'll need to add a constructor that takes the number of* elements that you want the iterator to produce before stopping. Verify* that it works.*/import java.util.*;import static net.mindview.util.Print.*;class RandomShapeGenerator implements Iterable<Shape>{private Random rand = new Random(47);Shape[] shape;RandomShapeGenerator(int count){shape=new Shape[count];for(int i=0;i<shape.length;i++)shape[i]=next();}public Shape next() {switch(rand.nextInt(3)) {default:case 0: return new Circle();case 1: return new Square();case 2: return new Triangle();}}public Iterator<Shape> iterator(){return new Iterator<Shape>(){private int index=-1;public boolean hasNext(){return index<shape.length;}public Shape next(){index++;return shape[index];}public void remove(){throw new UnsupportedOperationException();}};}  }public class Ja11_13_31{public static void main(String[] args){RandomShapeGenerator rs=new RandomShapeGenerator(4);Iterator<Shape> it=rs.iterator();while(it.hasNext()){print(it.next());it.remove();}}}

32.按照MultiIterableClass示例,在NonCollectionSequence.java中添加reversed()和randomized()方法,并让NonCollectionSequence实现Iterable。然后在foreach语句中展示所有的使用方式。


/* Following the example of MultiIterableClass, add reversed() and randomized() * methods to NonCollectionSequence.java, as well as making  NonCollectionSequence.java* implement Iterable and show that all the approaches * work in foreach statements.*/import java.util.*;import static net.mindview.util.Print.*;import typeinfo.pets.*;class PetSequence {protected Pet[] pets = Pets.createArray(8);}public class Ja11_13_32 extends PetSequence /*implements Iterable<Pet>*/ {public Iterable<Pet> iterator(){return new Iterable<Pet>(){public Iterator<Pet> iterator() {return new Iterator<Pet>() {private int index = 0;public boolean hasNext() {return index<pets.length;}public Pet next() { return pets[index++]; }public void remove() { // Not implementedthrow new UnsupportedOperationException();}};}};}public Iterable<Pet> reversed(){return new Iterable<Pet>(){public Iterator<Pet> iterator() {return new Iterator<Pet>() {private int index = pets.length-1;public boolean hasNext() {return index>-1;}public Pet next() { return pets[index--]; }public void remove() { // Not implementedthrow new UnsupportedOperationException();}};}};}public Iterable<Pet> randomized(){return new Iterable<Pet>(){public Iterator<Pet> iterator(){Random rand=new Random(6);List<Pet> lp=new ArrayList<Pet>(Arrays.asList(pets));Collections.shuffle(lp,rand);return lp.iterator();}};}public static void  display(Iterable<Pet> itb){for(Pet i:itb){print(i);}}public static void main(String[] args) {Ja11_13_32 nc = new Ja11_13_32();display(nc.randomized());print();display(nc.iterator());print();display(nc.reversed());}}/*PugRatManxPugMuttCymricManxCymricRatManxCymricMuttPugCymricPugManxManxPugCymricPugMuttCymricManxRat*/

结束~
我的另一个博客:https://www.cnblogs.com/hsjj/
会不定时的更新算法题
有问题欢迎发送邮件至hpzhangjunjiell@163.com
我们下次见哦~

Java编程思想第四版第十一章习题(下)相关推荐

  1. Java编程思想第四版第六章习题

    断更了一天,今天开始第六章,隔热感觉有点像C++的Iclude. 闲话少说,直接上题,编译器IDEA. 1.在某个包中创建一个类,在这个类所处的包的外部创建该类的一个实例. class A: /*** ...

  2. java编程思想第四版第三章要点习题

    使用"简短的" 和正常的 打印语句来编写一个程序 package net.mindview.util;public class Print {/*** 不带有回车* @param ...

  3. Java编程思想第4版第三章习题

    因为我是从C++转来的,所以学起来比较容易,闲话少说直接上题. PS:编译器eclipse,正在安装IDEA,安装成功的话后面用这个编译器写 1.使用简短的和正常的打印语句来编写一个程序: PS:这个 ...

  4. Java编程思想第四版——第十五天

    2012-04-23 121-131/913 Java编程思想第四版--第十五天 5.5.3 终结条件 通常不能指望finalize(),必须创建其他的"清理"方法,并明确的调用它 ...

  5. Java编程思想第四版学习总结

    Java编程思想第四版学习总结 文章目录 Java编程思想第四版学习总结 第 1 章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 实现方案的隐藏 1.4 方案的重复使用 1.5 继承:重 ...

  6. Java编程思想 第四版 读书笔记巩固基础,完善知识框架。

    Java编程思想读书笔记 此笔记仅仅是作者的阅读此书时,发现自己错误认识和不牢固的知识,用来完善作者的知识框架,其列出重点不具有参考性,代码也是为了省工作量,简写代码,能看懂即可,语法并不规范 第一章 ...

  7. Java编程思想第四版第九章练习

    这一章讲的是接口, 其中抽象和C++中的纯虚函数特别相似,我会在Java编程思想专栏做完以后,专门写一篇文章来对比C++和Java的不同. 1.修改第8章练习9中的Rodent,使其成为一个抽象类.只 ...

  8. Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(二)之Introduction to Objects...

    The genesis of the computer revolution was a machine. The genesis of out programming languages thus ...

  9. java编程思想第四版第十四章 类型信息习题

    fda dfa 第三题u package net.mindview.typeinfo.test4;import java.util.ArrayList; import java.util.Arrays ...

最新文章

  1. 编辑PDF文档,Word 2013可以是您的选择
  2. 一文看懂人脸识别(4个特点+4个实现步骤+5个难点+算法发展轨迹)
  3. 微信消息类型和事件类型
  4. Ardino基础教程 10_光控声音
  5. GVA gin vue从后端接口获取多选下拉框数据
  6. python颜色识别原理_电脑控制手机 Python实现颜色识别功能
  7. 演练 打印九九乘法表
  8. Collections.shuffle()方法的使用
  9. Laravel核心解读--Contracts契约
  10. 年轻人,被领导骂是怎样一种感觉?
  11. python画三维图-Python使用matplotlib绘制三维图形示例
  12. 01_Flume基本架构及原理
  13. Mysql 5.6 在性能、可伸缩性、可用性方面的新突破二
  14. Swift人工智能实战:从基础理论到AI驱动的应用程序开发
  15. js读取excel中日期格式转换问题
  16. c语言中的整型常量和实型常量
  17. 【模拟IC】时钟馈通效应减小及仿真验证
  18. 4G PCIE网卡在英创ESM6800上的使用步骤
  19. cron定时任务详解
  20. 华南师范大学计算机课网址,华南师范大学网络课程 首页

热门文章

  1. 好看有个性的轻量级可配置网站导航源码 可做各种网站导航
  2. 印度德里打算“封城”,不是因为新冠 | 经济学人全球早报精选
  3. C-CAS中央空调计费系统 中央空调时间型计费系统
  4. NKOI 1006 护卫队
  5. 雷达线性调频matlab,线性调频脉冲雷达信号matlab仿真.pdf
  6. 降噪效果好的蓝牙耳机有哪些?降噪耳机降噪效果排名
  7. 考研数据结构判断题整合_做题版
  8. 【Linux】安装有趣的命令 ”sl“(跑火车)
  9. 如果做不到一个好程序员,建议别满嘴跑火车
  10. 精益软件开发的思想_精益软件开发原理快速指南