T
T
thatmaniscool2017-05-17 20:12:51
Java
thatmaniscool, 2017-05-17 20:12:51

How to understand the principle of the code from the book "Philosophy of Java"?

For example, the author gives the following code

import typeinfo.pets.*;
import java.util.*;
import static net.mindview.util.Print.*;
public class ListFeatures {
 public static void main(String[] args) {
 Random rand = new Random(47);
 List<Pet> pets = Pets.arrayList(7);
 print("1: " + pets);
 Hamster h = new Hamster();
 pets.add(h); // Automatically resizes
 print("2: " + pets);
 print("3: " + pets.contains(h));
 pets.remove(h); // Remove by object
 Pet p = pets.get(2);
 print("4: " + p + " " + pets.indexOf(p));
 Pet cymric = new Cymric();
 print("5: " + pets.indexOf(cymric));
 print("6: " + pets.remove(cymric));
 // Must be the exact object:
 print("7: " + pets.remove(p));
 print("8: " + pets);
 pets.add(3, new Mouse()); // Insert at an index
Holding Your Objects 283
 print("9: " + pets);
 List<Pet> sub = pets.subList(1, 4);
 print("subList: " + sub);
 print("10: " + pets.containsAll(sub));
 Collections.sort(sub); // In-place sort
 print("sorted subList: " + sub);
 // Order is not important in containsAll():
 print("11: " + pets.containsAll(sub));
 Collections.shuffle(sub, rand); // Mix it up
 print("shuffled subList: " + sub);
 print("12: " + pets.containsAll(sub));
 List<Pet> copy = new ArrayList<Pet>(pets);
 sub = Arrays.asList(pets.get(1), pets.get(4));
 print("sub: " + sub);
 copy.retainAll(sub);
 print("13: " + copy);
 copy = new ArrayList<Pet>(pets); // Get a fresh copy
 copy.remove(2); // Remove by index
 print("14: " + copy);
 copy.removeAll(sub); // Only removes exact objects
 print("15: " + copy);
 copy.set(1, new Mouse()); // Replace an element
 print("16: " + copy);
 copy.addAll(2, sub); // Insert a list in the middle
 print("17: " + copy);
 print("18: " + pets.isEmpty());
 pets.clear(); // Remove all elements
 print("19: " + pets);
 print("20: " + pets.isEmpty());
 pets.addAll(Pets.arrayList(4));
 print("21: " + pets);
 Object[] o = pets.toArray();
 print("22: " + o[3]);
 Pet[] pa = pets.toArray(new Pet[0]);
 print("23: " + pa[3].id());
 }
} /* 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

But the problem is that I don't have imports. class typeinfo.pets.*;
The author himself writes on this subject as follows:

The following example reaches forward in the book to use a library from the Type
Information chapter by importing typeinfo.pets.

But, I haven't had a Type Information chapter yet. The author in all seriousness suggests skipping part of the book or what?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
D
Dmitry, 2017-05-17
@TrueBers

Are you stuffing the source codes from the book with your hands?
Here are the official sources from the author. Download and understand yourself calmly.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question