exercise 1
import java.util.ArrayList;
class Gerbil{
private int gerbilNumber;
public Gerbil(int g){
gerbilNumber=g;
}
public void hop(){
System.out.print(gerbilNumber+",");
}
}
public class Ex1 {
public static void main(String[]args){
ArrayList<Gerbil>ger=new ArrayList<Gerbil>();
for(int i=0;i<10;i++){
ger.add(new Gerbil(i));
}
for(int i=0;i<ger.size();i++){
ger.get(i).hop();
}
System.out.println();
for(Gerbil g:ger){
g.hop();
}
}
}
output
0,1,2,3,4,5,6,7,8,9,
0,1,2,3,4,5,6,7,8,9,
exercise 3
package exercise;
import java.util.ArrayList;
interface Selector {
boolean end();
Object current();
void next();
}
public class Ex3 {
private ArrayList<Object>items=new ArrayList<Object>();
private int next = 0;
public void add(Object x) {
items.add(x);
}
private class SequenceSelector implements Selector {
private int i = 0;
public boolean end() {
return i == items.size();
}
public Object current() {
return items.get(i);
}
public void next() {
if (i < items.size())
i++;
}
}
public Selector selector() {
return new SequenceSelector();
}
public static void main(String[] args) {
Ex3 sequence = new Ex3();
for (int i = 0; i < 10; i++)
sequence.add(Integer.toString(i));
Selector selector = sequence.selector();
while (!selector.end()) {
System.out.print(selector.current() + " ");
selector.next();
}
}
} /* * Output: 0 1 2 3 4 5 6 7 8 9 */// :~
exercise 4
//由generator产生一些电影名称,创建array,ArrayList,HashSet,LinkedHashSet,TreeSet,
//用generator产生的名声填充,循环产生名称。
package exercise;
import java.util.*;
class Generator{
int index=0;
public String next(){
switch(index){
default:
case 0:index++;return "a.movie1";
case 1:index++;return "d.movie2";
case 2:index++;return "m.movie3";
case 3:index++;return "h.movie4";
case 4:index++;return "l.movie5";
case 5:index++;return "p.movie6";
case 6:index++;return "u.movie7";
case 7:index=0;return "f.movie8";
}
}
}
public class Ex4 {
public static void main(String[]args){
Generator g=new Generator();
String []arr=new String[10];
for(int i=0;i<arr.length;i++){
arr[i]=g.next();
}
ArrayList<String>Al=new ArrayList<String>();
g.index=0;//从0开始填充
for(int i=0;i<10;i++){
Al.add(g.next());
}
LinkedList<String>Ll=new LinkedList<String>();
g.index=0;
for(int i=0;i<10;i++){
Ll.add(g.next());
}
HashSet<String>Hs=new HashSet<String>();
g.index=0;
for(int i=0;i<10;i++){
Hs.add(g.next());
}
LinkedHashSet<String>Lhs=new LinkedHashSet<String>();
g.index=0;
for(int i=0;i<10;i++){
Lhs.add(g.next());
}
TreeSet<String>Ts=new TreeSet<String>();
g.index=0;
for(int i=0;i<10;i++){
Ts.add(g.next());
}
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
System.out.println();
for(int i=0;i<Al.size();i++){
System.out.print(Al.get(i)+" ");
}
System.out.println();
for(int i=0;i<Ll.size();i++){
System.out.print(Ll.get(i)+" ");
}
System.out.println();
//Set没有get()方法
System.out.println(Hs);
System.out.println(Lhs);
System.out.println(Ts);
}
}
output
a.movie1 d.movie2 m.movie3 h.movie4 l.movie5 p.movie6 u.movie7 f.movie8 a.movie1 d.movie2
a.movie1 d.movie2 m.movie3 h.movie4 l.movie5 p.movie6 u.movie7 f.movie8 a.movie1 d.movie2
a.movie1 d.movie2 m.movie3 h.movie4 l.movie5 p.movie6 u.movie7 f.movie8 a.movie1 d.movie2
[p.movie6, m.movie3, h.movie4, l.movie5, a.movie1, f.movie8, d.movie2, u.movie7]
[a.movie1, d.movie2, m.movie3, h.movie4, l.movie5, p.movie6, u.movie7, f.movie8]
[a.movie1, d.movie2, f.movie8, h.movie4, l.movie5, m.movie3, p.movie6, u.movie7]
exercise 5
//: holding/ListFeatures.java
import java.util.*;
public class ListFeatures {
public static void main(String[] args) {
Random rand = new Random(47);
List<Pet> pets = Pets.arrayList(7);
System.out.print("1: " + pets);
System.out.println();
Hamster h = new Hamster();
pets.add(h); // Automatically resizes
System.out.print("2: " + pets);
System.out.println();
System.out.print("3: " + pets.contains(h));
System.out.println();
pets.remove(h); // Remove by object
Pet p = pets.get(2);
System.out.print("4: " + p + " " + pets.indexOf(p));
System.out.println();
Pet cymric = new Cymric();
System.out.print("5: " + pets.indexOf(cymric));
System.out.println();
System.out.print("6: " + pets.remove(cymric));
System.out.println();
// Must be the exact object:
System.out.print("7: " + pets.remove(p));
System.out.println();
System.out.print("8: " + pets);
System.out.println();
pets.add(3, new Mouse()); // Insert at an index
System.out.print("9: " + pets);
System.out.println();
List<Pet> sub = pets.subList(1, 4);
System.out.print("subList: " + sub);
System.out.println();
System.out.print("10: " + pets.containsAll(sub));
System.out.println();
Collections.sort(sub); // In-place sort
System.out.print("sorted subList: " + sub);
System.out.println();
// Order is not important in containsAll():
System.out.print("11: " + pets.containsAll(sub));
System.out.println();
Collections.shuffle(sub, rand); // Mix it up
System.out.print("shuffled subList: " + sub);
System.out.println();
System.out.print("12: " + pets.containsAll(sub));
System.out.println();
List<Pet> copy = new ArrayList<Pet>(pets);
sub = Arrays.asList(pets.get(1), pets.get(4));
System.out.print("sub: " + sub);
System.out.println();
copy.retainAll(sub);
System.out.print("13: " + copy);
System.out.println();
copy = new ArrayList<Pet>(pets); // Get a fresh copy
copy.remove(2); // Remove by index
System.out.print("14: " + copy);
System.out.println();
copy.removeAll(sub); // Only removes exact objects
System.out.print("15: " + copy);
System.out.println();
copy.set(1, new Mouse()); // Replace an element
System.out.print("16: " + copy);
System.out.println();
copy.addAll(2, sub); // Insert a list in the middle
System.out.print("17: " + copy);
System.out.println();
System.out.print("18: " + pets.isEmpty());
System.out.println();
pets.clear(); // Remove all elements
System.out.print("19: " + pets);
System.out.println();
System.out.print("20: " + pets.isEmpty());
System.out.println();
pets.addAll(Pets.arrayList(4));
System.out.print("21: " + pets);
System.out.println();
Object[] o = pets.toArray();
System.out.print("22: " + o[3]);
System.out.println();
Pet[] pa = pets.toArray(new Pet[0]);
System.out.print("23: " + pa[3].id());
System.out.println();
}
} /* Output: 1: [Rat, Manx, Cymric, Mutt, Pug, Cymric, Pug] 2: [Rat, Manx, Cymric, Mutt, Pug, Cymric, Pug, Hamster] 3: true 4: Cymric 2 5: -1 6: false 7: true 8: [Rat, Manx, Mutt, Pug, Cymric, Pug] 9: [Rat, Manx, Mutt, Mouse, Pug, Cymric, Pug] subList: [Manx, Mutt, Mouse] 10: true sorted subList: [Manx, Mouse, Mutt] 11: true shuffled subList: [Mouse, Manx, Mutt] 12: true sub: [Mouse, Pug] 13: [Mouse, Pug] 14: [Rat, Mouse, Mutt, Pug, Cymric, Pug] 15: [Rat, Mutt, Cymric, Pug] 16: [Rat, Mouse, Cymric, Pug] 17: [Rat, Mouse, Mouse, Pug, Cymric, Pug] 18: false 19: [] 20: true 21: [Manx, Cymric, Rat, EgyptianMau] 22: EgyptianMau 23: 14 *///:~
改成Integer后
package exercise;
//holding/Ex5.java
//TIJ4 Chapter Holding, Exercise 5, page 406
/* Modify ListFeatures.java so that it uses Integers (remember * autoboxing!) instead of Pets, and explain any difference in * results. */
import java.util.*;
public class Ex5 {
// method to make a List<Integer> with random values < n:
public static List<Integer> listOfRandInteger(int length, int n) {
Random rand = new Random();
List<Integer> li = new ArrayList<Integer>();
for (int i = 0; i < length; i++)
li.add(rand.nextInt(n));
return li;
}
public static void main(String[] args) {
Random rand = new Random();
List<Integer> li = listOfRandInteger(7, 10);
System.out.print("1: " + li);
System.out.println();
Integer h = new Integer(rand.nextInt(10));
li.add(h);
System.out.print("2: " + li);
System.out.println();
System.out.print("3: " + li.contains(h));
System.out.println();
// removes the first instance equivalent to Integer h:
li.remove(h);
System.out.print("3.5: " + li);
System.out.println();
Integer p = li.get(2);
System.out.print("4: " + p + " " + li.indexOf(p));
System.out.println();
Integer cy = new Integer(rand.nextInt(10));
System.out.print("5: " + cy + " " + li.indexOf(cy));
System.out.println();
System.out.print("6: " + li.remove(cy));
System.out.println();
System.out.print("7: " + li.remove(p));
System.out.println();
System.out.print("8: " + li);
System.out.println();
li.add(3, new Integer(rand.nextInt(10)));
System.out.print("9: " + li);
System.out.println();
List<Integer> sub = li.subList(1, 4);
System.out.print("sublist: " + sub);
System.out.println();
System.out.print("10: " + li.containsAll(sub));
System.out.println();
// will also sort sub elements within li:
Collections.sort(sub);
System.out.print("sorted sublist: " + sub);
System.out.println();
System.out.print("11: " + li.containsAll(sub));
System.out.println();
System.out.print("11.25: " + li);
System.out.println();
// will also shuffle sub elements within li:
Collections.shuffle(sub, rand);
System.out.print("11.5: " + li);
System.out.println();
System.out.print("shuffled sublist: " + sub);
System.out.println();
System.out.print("12: " + li.containsAll(sub));
System.out.println();
List<Integer> copy = new ArrayList<Integer>(li);
System.out.print("12.5: " + li);
System.out.println();
sub = Arrays.asList(li.get(1), li.get(4));
System.out.print("sub: " + sub);
System.out.println();
copy.retainAll(sub);
System.out.print("13: " + copy);
System.out.println();
copy = new ArrayList<Integer>(li);
copy.remove(2);
System.out.print("14: " + copy);
System.out.println();
copy.removeAll(sub);
System.out.print("15: " + copy);
System.out.println();
if (copy.size() > 1) // to avoid out of bounds exception
copy.set(1, 8); // autoboxing int -> Integer
System.out.print("16: " + copy);
System.out.println();
if (copy.size() > 2)
copy.addAll(2, sub);
System.out.print("17: " + copy);
System.out.println();
System.out.print("18: " + li.isEmpty());
System.out.println();
li.clear();
System.out.print("19: " + li);
System.out.println();
System.out.print("20: " + li.isEmpty());
System.out.println();
li.addAll(listOfRandInteger(4, 10));
System.out.print("21: " + li);
System.out.println();
Object[] o = li.toArray();
System.out.print("22: " + o[3]);
System.out.println();
Integer[] ia = li.toArray(new Integer[0]);
System.out.print("23: " + ia[3]);
System.out.println();
}
}
output
1: [5, 5, 5, 1, 8, 4, 5]
2: [5, 5, 5, 1, 8, 4, 5, 0]
3: true
3.5: [5, 5, 5, 1, 8, 4, 5]
4: 5 0
5: 4 5
6: true
7: true
8: [5, 5, 1, 8, 5]
9: [5, 5, 1, 6, 8, 5]
sublist: [5, 1, 6]
10: true
sorted sublist: [1, 5, 6]
11: true
11.25: [5, 1, 5, 6, 8, 5]
11.5: [5, 5, 6, 1, 8, 5]
shuffled sublist: [5, 6, 1]
12: true
12.5: [5, 5, 6, 1, 8, 5]
sub: [5, 8]
13: [5, 5, 8, 5]
14: [5, 5, 1, 8, 5]
15: [1]
16: [1]
17: [1]
18: false
19: []
20: true
21: [5, 4, 5, 4]
22: 4
23: 4
exercise 7
package exercise;
import java.util.*;
class A {
int a;
A(int a) {this.a = a;}
public void show() {
System.out.println(a);
}
public String toString(){
return a+"";
}
}
public class Ex7 {
public static void main(String[] args) {
A[] arr = new A[10];
for (int i = 0; i < arr.length; i++) {
arr[i]=new A(i);
}
ArrayList<A>list=new ArrayList<A>();
for(A aa:arr)list.add(aa);
System.out.println(list);
List<A>sub=list.subList(3, 5);
System.out.println(sub);
ArrayList<A>subl=new ArrayList<A>(list);
subl.removeAll(sub);
System.out.println(list.removeAll(sub));
System.out.println(subl);
}
}
output
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[3, 4]
true
[0, 1, 2, 5, 6, 7, 8, 9]
exercise 8
Iterator 的用法:
package exercise;
import java.util.ArrayList;
import java.util.Iterator;
class Gerbil{
private int ger;
public Gerbil(int i){
ger=i;
}
public void hop(){
System.out.print(ger+",");
}
}
public class Ex8 {
public static void main(String[]args){
ArrayList<Gerbil>al=new ArrayList<Gerbil>();
for(int i=0;i<10;i++){
al.add(new Gerbil(i));
}
Iterator<Gerbil>it=al.iterator();
while(it.hasNext()){
it.next().hop();
}
}
}
output
0,1,2,3,4,5,6,7,8,9,