Java编程思想第四版第十一章习题(下)
这是第十一章最后一节,之后我会做前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编程思想第四版第十一章习题(下)相关推荐
- Java编程思想第四版第六章习题
断更了一天,今天开始第六章,隔热感觉有点像C++的Iclude. 闲话少说,直接上题,编译器IDEA. 1.在某个包中创建一个类,在这个类所处的包的外部创建该类的一个实例. class A: /*** ...
- java编程思想第四版第三章要点习题
使用"简短的" 和正常的 打印语句来编写一个程序 package net.mindview.util;public class Print {/*** 不带有回车* @param ...
- Java编程思想第4版第三章习题
因为我是从C++转来的,所以学起来比较容易,闲话少说直接上题. PS:编译器eclipse,正在安装IDEA,安装成功的话后面用这个编译器写 1.使用简短的和正常的打印语句来编写一个程序: PS:这个 ...
- Java编程思想第四版——第十五天
2012-04-23 121-131/913 Java编程思想第四版--第十五天 5.5.3 终结条件 通常不能指望finalize(),必须创建其他的"清理"方法,并明确的调用它 ...
- Java编程思想第四版学习总结
Java编程思想第四版学习总结 文章目录 Java编程思想第四版学习总结 第 1 章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 实现方案的隐藏 1.4 方案的重复使用 1.5 继承:重 ...
- Java编程思想 第四版 读书笔记巩固基础,完善知识框架。
Java编程思想读书笔记 此笔记仅仅是作者的阅读此书时,发现自己错误认识和不牢固的知识,用来完善作者的知识框架,其列出重点不具有参考性,代码也是为了省工作量,简写代码,能看懂即可,语法并不规范 第一章 ...
- Java编程思想第四版第九章练习
这一章讲的是接口, 其中抽象和C++中的纯虚函数特别相似,我会在Java编程思想专栏做完以后,专门写一篇文章来对比C++和Java的不同. 1.修改第8章练习9中的Rodent,使其成为一个抽象类.只 ...
- 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 ...
- java编程思想第四版第十四章 类型信息习题
fda dfa 第三题u package net.mindview.typeinfo.test4;import java.util.ArrayList; import java.util.Arrays ...
最新文章
- 编辑PDF文档,Word 2013可以是您的选择
- 一文看懂人脸识别(4个特点+4个实现步骤+5个难点+算法发展轨迹)
- 微信消息类型和事件类型
- Ardino基础教程 10_光控声音
- GVA gin vue从后端接口获取多选下拉框数据
- python颜色识别原理_电脑控制手机 Python实现颜色识别功能
- 演练 打印九九乘法表
- Collections.shuffle()方法的使用
- Laravel核心解读--Contracts契约
- 年轻人,被领导骂是怎样一种感觉?
- python画三维图-Python使用matplotlib绘制三维图形示例
- 01_Flume基本架构及原理
- Mysql 5.6 在性能、可伸缩性、可用性方面的新突破二
- Swift人工智能实战:从基础理论到AI驱动的应用程序开发
- js读取excel中日期格式转换问题
- c语言中的整型常量和实型常量
- 【模拟IC】时钟馈通效应减小及仿真验证
- 4G PCIE网卡在英创ESM6800上的使用步骤
- cron定时任务详解
- 华南师范大学计算机课网址,华南师范大学网络课程 首页
热门文章
- 好看有个性的轻量级可配置网站导航源码 可做各种网站导航
- 印度德里打算“封城”,不是因为新冠 | 经济学人全球早报精选
- C-CAS中央空调计费系统 中央空调时间型计费系统
- NKOI 1006 护卫队
- 雷达线性调频matlab,线性调频脉冲雷达信号matlab仿真.pdf
- 降噪效果好的蓝牙耳机有哪些?降噪耳机降噪效果排名
- 考研数据结构判断题整合_做题版
- 【Linux】安装有趣的命令 ”sl“(跑火车)
- 如果做不到一个好程序员,建议别满嘴跑火车
- 精益软件开发的思想_精益软件开发原理快速指南