- 第一题
package net.mindview.holding.test1;
import java.util.ArrayList;
import java.util.List;
/**
* 沙鼠
* @author samsung
*
*/
public class Gerbil {
static int counter;
gerbilNumber;
public Gerbil(){
this.gerbilNumber = counter ++;
}
String hop(){
return "沙鼠的号码:"+gerbilNumber + ,正在跳跃"void main(String[] args) {
List<Gerbil> list = new ArrayList<Gerbil>();
list.add(new Gerbil());
list.add( Gerbil());
for(Gerbil g: list){
System.out.println(g.hop());
}
}
}
运行结果
沙鼠的号码:0123,正在跳跃
?
- 第二题
package net.mindview.holding.test2;
import java.util.HashSet;
import java.util.Set;
SimpleCollection {
main(String[] args) {
Set<Integer> c = new HashSet<Integer>();
for(int i = 0; i < 10; i++){
c.add(i);
}
(Integer i: c){
System.out.print(i + );
}
}
}
?
- 第三题
package net.mindview.holding.test3;
import java.util.ArrayList;
import java.util.List;
*
* 选择器
interface Selector {
//是否结束
boolean end();
当前
Object current();
下一个
next();
}
*
* 顺序
Sequence {
数组是有限制的,而集合时无限制的.
private Object[] items;
private List<Object> items;
private int next = ;
定义数组的个数
Sequence(){
items = new ArrayList<Object>();
}
添加
add(Object x){
items.add(x);
}
内部类--顺序选择器
SequenceSelector implements Selector {
选择器最开始指向第一个元素
;
@Override
boolean end() {
return i == (items.size());
}
*
* 新增方法: 在内部类中引用外部类
*/
Sequence outer(){
return Sequence.this;
}
@Override
Object current() {
return items.get(i);
}
@Override
next() {
if(i<items.size()){
i++;
}
}
}
Selector selector() {
return SequenceSelector();
}
main(String[] args) {
Sequence s = Sequence();
int i=0; i<){
s.add(对象"+i);
}
Selector selector = s.selector();
while(!selector.end()){
System..print(selector.current());
selector.next();
}
}
}
结果
对象0对象1对象2对象3对象4对象5对象6对象7对象8对象9
分析: 这个案例的重点是, 数组瘦受限制的, 集合是没有元素个数限制的。 因此,可以任意添加元素的意思就是:将数组替代为集合。
- 第四题
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;
MoiveNameGenerator {
String[] moives = {Snow White",Star WarsWhite PrincpleDreamMy MotherThe ForestMy Grandpa};
next;
String next(){
String moive = moives[next];
电影名用完之后,循环到这个字符列表的开始处
next = (next+1) % moives.length;
return moive;
}
}
MoiveGenerator {
MoiveNameGenerator moiveNameGenerator = MoiveNameGenerator();
String[] fill(String[] arr){
0; i<arr.length; i++){
arr[i] = moiveNameGenerator.next();
}
arr;
}
Collection fill(Collection col){
5; i++){
col.add(moiveNameGenerator.next());
}
col;
}
main(String[] args) {
MoiveGenerator moiveGenerator = MoiveGenerator();
System.out.println(Arrays.toString(moiveGenerator.fill(new String[5])));
System.out.println(moiveGenerator.fill(new ArrayList<String>()));
System.new LinkedList<String>new HashSet<String>new LinkedHashSet<String>new TreeSet<String>()));
}
}
运行结果:
[Snow White,Star Wars,White Princple,Dream,My Mother]
[The Forest,My Grandpa,Snow White,White Princple]
[Dream,My Mother,The Forest,Snow White]
[My Mother,White Princple]
[My Grandpa,Dream]
[My Grandpa,The Forest]
?
- dff
- af
- a
- fa
- fda
- sf
- af
- as
- fa
- fa
-
栈在编程语言中,经常用来对表达式求值。请使用net.mindview.util.Stack对下面的表达式求值。?其中“+”表示将后面的字母压入栈,“-”表示将栈顶的字母押出栈。并打印他们。
package net.mindview.holding;
import java.util.LinkedList;
*
* 模拟栈
class Stack<T> {
private LinkedList<T> storage = new LinkedList<T>();
推入
push(T v){
storage.addFirst(v);
}
T peek(){
storage.getFirst();
}
取出
T pop(){
storage.removeFirst();
}
boolean empty(){
storage.isEmpty();
}
String toString(){
storage.toString();
}
}
package net.mindview.holding.test15;
import java.util.Stack;
*
* 栈在编程语言中,经常用来对表达式求值。请使用net.mindview.util.Stack对下面的表达式求值。
* 其中“+”表示将后面的字母压入栈,“-”表示将栈顶的字母押出栈。并打印他们。
* @author samsung
*
Test15 {
Stack<Character> stac = new Stack<Character>();
计算
eval(String str){
char[] chars = str.tocharArray();
0; i<chars.length; i++){
char c = chars[i++];
遇到+号把字符入栈
switch (c){
case '+':
System.out.println(入栈:stac.push(chars[i]));
break;
-出栈:stac.pop());
main(String[] args) {
Test15 t = Test15();
String str = +U+n+c---+e+r+t---+a-+i-+n+t+y---+ -+r+u--+l+e+s--;
t.eval(str);
}
}
?
- fda
- fa
- fa
- dfa
- fa
- df
- asfd
- afa
- fa
- fa
- fa
- 二十七题
package net.mindview.holding.test27;
import java.util.LinkedList;
import java.util.Queue;
消息
Command {
String str;
Command(String str){
this.str = str;
}
operation(){
System..println(str);
}
}
生产者
Producter{
生产者生成消息
public Queue<Command> produce(Queue<Command> qc){
qc.offer(new Command(A));
qc.offer(ABABCVFASDA));
qc;
}
}
消费者
Customer {
消费者消费消息
void custom(Queue<Command> queue){
while(queue.peek() != null){
queue.remove().operation();
}
}
}
Test27 {
main(String[] args) {
Queue<Command> qc = new LinkedList<Command>();
Producter producter = Producter();
Queue<Command> qcc = producter.produce(qc);
Customer().custom(qcc);
}
}
运行结果:
A
AB
ABC
VFA
SDA
?
-
- fa
- 第三十一题
package net.mindview.holding.test31;
import java.util.Iterator;
import java.util.Random;
形状
Shape {
draw() {
}
erase() {
}
}
圆形
Cycle1 extends Shape {
@Override
draw() {
System.draw cycle);
}
@Override
erase() {
System.erase cycle);
}
}
Square extends Shape {
@Override
draw Square);
}
}
矩形
Triangle extends Shape {
@Override
draw Triangle 梯形
Trapezoid extends Shape {
@Override
draw Trapezoidclass RandomShapeFactory implements Iterable<Shape> {
Random random = new Random(47);
private final quantity;
public RandomShapeFactory( quantity) {
this.quantity= quantity;
}
下面画什么形状呢
Shape nextShape() {
switch (random.nextInt(4)) {
default:
:
Cycle1();
Square();
Triangle();
3 Trapezoid();
}
}
@Override
public Iterator<Shape> iterator() {
new Iterator<Shape>() {
int count = ;
@Override
boolean hasNext() {
return count < quantity;
}
@Override
Shape next() {
++count;
nextShape();
}
@Override
remove() {
}
};
}
}
Shapes {
main(String[] args) {
RandomShapeFactory rd = new RandomShapeFactory(9);
(Shape s : rd) {
System..println(s.getClass().getSimpleName());
}
}
}
运行结果
Triangle
Square
Triangle
Cycle1
Cycle1
Triangle
Cycle1
Square
Triangle
?
- f
- afda