import java.util.*;
class GenericTest1 {
public static void main(String[] args) {
LinkedList list = new LinkedList();
list.add(new Integer(1));
list.add(new Integer(2));
list.add(new Integer(4));
list.add("Alice");
int sum = 0;
for(int i=0; i<list.size();i++){
Integer a = (Integer) list.get(i);
sum = sum + a.intValue();
}
System.out.println("sum = "+sum);
}
}
class GenericTest2 {
public static void main(String[] args) {
LinkedList<Integer> list = new LinkedList<Integer>();
list.add(new Integer(1));
list.add(new Integer(2));
list.add(new Integer(4));
list.add("Alice");
int sum = 0;
for(int i=0; i<list.size();i++){
Integer a = list.get(i);
sum = sum + a.intValue();
}
System.out.println("sum = "+sum);
}
}
import java.util.*;
public class Test {
public static void main(String[] args) {
LinkedList<A> a = new LinkedList<A>();
LinkedList<B> b = new LinkedList<B>();
LinkedList<Object> c = new LinkedList<Object>();
printLinkedList(a);
printLinkedList(b);
printList(a);
printList(b);
printList(c);
printCollection(a);
printCollection(b);
printCollection(c);
}
public static void printLinkedList(LinkedList<? extends A> list){ }
public static void printList(List<? super B> list){ }
public static void printCollection(Collection<?> collection){ }
}
class A{}
class B extends A{}
import java.util.*;
public class CollectionIteratorExample {
public static void main(String[] args) {
Collection<String> c1 = new HashSet<String>();
c1.add("张三");
c1.add("李四");
System.out.print("c1集合信息:");
printCollection(c1);
Collection<String> c2 = new HashSet<String>();
c2.add("王五");
c2.add("赵六");
System.out.print("c2集合信息:");
printCollection(c2);
c1.addAll(c2);
System.out.print("c1.addAll(c2)后,c1集合信息:");
printCollection(c1);
if(c1.contains("王五") == true)
System.out.println("c1包含王五");
if(c1.containsAll(c2) == true)
System.out.println("c1包含c2");
c1.removeAll(c2);
System.out.print("c1.removeAll(c2)后,c1集合信息:");
printCollection(c1);
c1.retainAll(c2);
System.out.print("c1.retainAll(c2)后,c1集合信息:");
printCollection(c1);
String[] names = c2.toArray(new String[0]);
System.out.print("c2.toArray(new String[0])获得String数组,相关数组信息:");
for(int i=0;i<names.length;i++)
System.out.print(names[i]+" ");
}
public static void printCollection(Collection<String> c){
System.out.print("元素个数:"+c.size()+" 分别是:");
Iterator<String> iterator = c.iterator();
while(iterator.hasNext())
System.out.print(iterator.next()+" ");
System.out.print("\n");
}
}
import java.util.*;
public class IteratorRemoveExample {
public static void main(String[] args) {
Collection<String> nameSet = new HashSet<String>();
nameSet.add("张三");
nameSet.add("张四");
nameSet.add("李三");
nameSet.add("李四");
nameSet.add("王三");
nameSet.add("王四");
System.out.print("删除所有姓李的名字之前,元素个数是:" +
nameSet.size() + " 分别是:");
Iterator<String> iterator = nameSet.iterator();
while(iterator.hasNext())
System.out.print(iterator.next()+" ");
iterator = nameSet.iterator();
while(iterator.hasNext()){
String e = iterator.next();
if(e.startsWith("李") == true)
iterator.remove();
}
System.out.print("\n删除所有姓李的名字之后,元素个数是:" +
nameSet.size() + " 分别是:");
iterator = nameSet.iterator();
while(iterator.hasNext())
System.out.print(iterator.next()+" ");
}
}
import java.util.*;
public class ListExample {
public static void main(String[] args) {
List<String> list1 = new LinkedList<String>();
List<String> list2 = new LinkedList<String>();
list1.add("张三");
list1.add(0,"李四");
list1.add("王五");
list1.add("赵六");
System.out.print("list1的元素:");
printList(list1);
list2.add("李四");
list2.add("王五");
list2.add("赵六");
System.out.print("list2的元素:");
printList(list2);
list1.addAll(0,list2);
System.out.print("list1.addAll(0,list2)执行后,list1的元素:");
printList(list1);
list1.remove(0);
System.out.print("list1.remove(0)执行后,list1的元素:");
printList(list1);
list1.set(0,"赵老六");
System.out.print("list1.set(0,\"赵老六\")执行后,list1的元素:");
printList(list1);
System.out.println("list1的第2个元素是:" + list1.get(2));
System.out.println("list1中\"赵六\"的位置(从前往后数):" +
list1.indexOf("赵六"));
System.out.println("list1中\"赵六\"的位置(从后往前数):" +
list1.lastIndexOf("赵六"));
List<String> list3 = list1.subList(1,4);
System.out.print("list1.subList(1,4)返回的子列表元素:");
printList(list3);
}
public static void printList(List<String> c){
ListIterator<String> iterator = c.listIterator();
while(iterator.hasNext())
System.out.print(iterator.next()+" ");
System.out.print("\n");
}
}
import java.util.*;
public class ListIteratorExample {
public static void main(String[] args) {
List<String> list = new LinkedList<String>();
list.add("张三");
list.add("李四");
list.add("王五");
list.add("赵六");
System.out.print("正向遍历的顺序是:");
ListIterator<String> iterator = list.listIterator();
while(iterator.hasNext())
System.out.print("(位置"+iterator.nextIndex()+":"+iterator.next()+")");
System.out.print("\n逆向遍历的顺序是:");
while(iterator.hasPrevious())
System.out.print("(位置"+iterator.previousIndex()+
":"+iterator.previous()+")");
System.out.print("\n先正向、后反向:");
System.out.print("(位置"+iterator.nextIndex()+":"+iterator.next()+")");
System.out.print("(位置"+iterator.previousIndex()+":"+iterator.previous()+")");
iterator = list.listIterator();
while(iterator.hasNext()){
String str = iterator.next();
if(str.equals("李四")){
iterator.set("李小四");
iterator.add("李小五");
}
}
System.out.print("\n将李四替换为李小四,然后添加李小五,元素分别是:\n");
iterator = list.listIterator();
while(iterator.hasNext())
System.out.print("(位置"+iterator.nextIndex()+":"+iterator.next()+")");
}
}
import java.util.*;
public class LinkedListExample {
public static void main(String[] args) {
LinkedList<String> list1 = new LinkedList<String>();
list1.add("李四");
list1.addLast("王五");
list1.addFirst("张三");
System.out.print("list1的元素:");
printList(list1);
LinkedList<String> list2 = new LinkedList<String>(list1);
list2.addFirst("李四");
list2.add("赵六");
System.out.print("list2的元素:");
printList(list2);
System.out.println("list2的头尾两个元素是:"+list2.getFirst()+" "+list2.getLast());
list2.removeFirst();
list2.removeLast();
System.out.print("删除list2的头尾两个元素后,list2的元素是:");
printList(list2);
}
public static void printList(List<String> c){
ListIterator<String> iterator = c.listIterator();
while(iterator.hasNext())
System.out.print(iterator.next()+" ");
System.out.print("\n");
}
}
//例6.8 ArrayList的使用示例
import java.util.*;
public class ArrayListExample {
public static void main(String[] args) {
ArrayList<String> list1 = new ArrayList<String>();
list1.add("张三");
list1.add("李四");
list1.add("王五");
System.out.print("list1的元素:");
printList(list1);
ArrayList<String> list2 = new ArrayList<String>(list1);
System.out.print("list2的元素:");
printList(list2);
LinkedList<String> list3 = new LinkedList<String>();
list3.add("张三");
list3.add("李四");
list3.add("王五");
System.out.print("list3的元素:");
printList(list3);
int initialCapacity = list1.size() + list2.size();
ArrayList<String> list4 = new ArrayList<String>(initialCapacity);
list4.addAll(list1);
list4.addAll(list2);
list4.ensureCapacity(list4.size()+list3.size());
list4.addAll(list3);
System.out.print("list4的元素:");
printList(list4);
}
public static void printList(List<String> c){
ListIterator<String> iterator = c.listIterator();
while(iterator.hasNext())
System.out.print(iterator.next()+" ");
System.out.print("\n");
}
}
//例6.9 HashSet的使用示例:不能添加重复元素
import java.util.*;
public class HashSetExample {
public static void main(String[] args) {
Set<String> c = new HashSet<String>();
c.add(new String("王五"));
c.add(new String("王五"));
c.add(new String("张三"));
c.add(new String("张三"));
c.add(new String("李四"));
c.add(new String("李四"));
c.add(new String("赵六"));
c.add(new String("赵六"));
c.add(null);
c.add(null);
System.out.print("元素个数:"+c.size()+" 分别是:");
Iterator<String> iterator = c.iterator();
while(iterator.hasNext())
System.out.print(iterator.next()+" ");
System.out.print("\n");
}
}
//例6.10 Set集合的使用示例:不定义Student类的equals和hashCode方法
import java.util.*;
class Student {
private String id,name,gender;
private int age;
public Student(String id,String name,int age,String gender){
this.id = id; this.name = name;
this.age = age; this.gender = gender;
}
public String toString(){
return "id = "+id + " name = "+name+" age = "+age+" gender = "+gender;
}
}
public class Test2{
public static void main(String[] args){
Student student1 = new Student("001","张三",18,"男");
Student student2 = new Student("001","张三",18,"男");
Student student3 = new Student("001","李四",19,"男");
HashSet<Student> set = new HashSet<Student>();
set.add(student1);
set.add(student2);
set.add(student3);
System.out.println("共有" + set.size()+"个元素");
Iterator<Student> iterator = set.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next().toString());
}
}
}
//例6.11 Set集合的使用示例:定义Student类的equals和hashCode方法
import java.util.*;
class Student {
private String id,name,gender;
private int age;
public Student(String id,String name,int age,String gender){
this.id = id; this.name = name;
this.age = age; this.gender = gender;
}
public boolean equals(Object obj){
if( obj instanceof Student){
Student a = (Student)obj;
return name.equals(a.name) && this.id.equals(a.id) &&
this.gender.equals(a.gender) && this.age == a.age;
}
return false;
}
public int hashCode(){
return id.hashCode()^ name.hashCode() ^
gender.hashCode() ^ (new Integer(age).hashCode());
}
public String toString(){
return "id = "+id + " name = "+name+" age = "+age+" gender = "+gender;
}
}
public class Test3{
public static void main(String[] args){
Student student1 = new Student("001","张三",18,"男");
Student student2 = new Student("001","张三",18,"男");
Student student3 = new Student("001","李四",19,"男");
HashSet<Student> set = new HashSet<Student>();
set.add(student1);
set.add(student2);
set.add(student3);
System.out.println("共有" + set.size()+"个元素");
Iterator<Student> iterator = set.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next().toString());
}
}
}
//例6.12 TreeSet的使用示例:排序集合创建与操作
import java.util.*;
public class TreeSetExample {
public static void main(String[] args) {
TreeSet<String> c = new TreeSet<String>();
c.add("John");
c.add("Bob");
c.add("Alice");
c.add("Clinton");
c.add("White");
c.add("Jack");
System.out.print("TreeSet集合信息:");
printSet(c);
System.out.println("最小的元素:"+c.first()+"最大的元素:"+c.last());
System.out.print("c.headSet(\"Clinton\")子集信息:");
printSet(c.headSet("Clinton"));
System.out.print("c.tailSet(\"Clinton\")子集信息:");
printSet(c.tailSet("Clinton"));
System.out.print("c.subSet(\"Bob,\"\"John\")子集信息:");
printSet(c.subSet("Bob","John"));
}
public static void printSet(Set<String> c){
System.out.print("元素个数:"+c.size()+",分别是:");
Iterator<String> iterator = c.iterator();
while(iterator.hasNext())
System.out.print(iterator.next()+" ");
System.out.print("\n");
}
}
//例6.13 TreeSet的使用示例:Comparable接口与自然排序
import java.util.*;
class Student implements Comparable<Student> {
private String id,name,gender;
private int age;
public Student(String id,String name,int age,String gender){
this.id = id; this.name = name;
this.age = age; this.gender = gender;
}
public String toString(){
return "id = "+id + " name = "+name+" age = "+age+" gender = "+gender;
}
public int compareTo(Student o) {
return this.id.compareTo(o.id);
}
}
public class Test4{
public static void main(String[] args){
Student student1 = new Student("003","张三",18,"男");
Student student2 = new Student("004","张四",20,"女");
Student student3 = new Student("002","张二",19,"男");
Student student4 = new Student("002","赵二",17,"女");
Student student5 = new Student("001","张一",18,"男");
Student student6 = new Student("005","张五",20,"男");
Set<Student> set = new TreeSet<Student>();
set.add(student1);
set.add(student2);
set.add(student3);
set.add(student4);
set.add(student5);
set.add(student6);
System.out.println("按照age排序后的" + set.size()+"个元素");
Iterator<Student> iterator = set.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next().toString());
}
}
}
//例6.14 TreeSet的使用示例:Comparator接口与比较器
import java.util.*;
class Student{
private String id,name,gender;
private int age;
public Student(String id,String name,int age,String gender){
this.id = id; this.name = name;
this.age = age; this.gender = gender;
}
public String toString(){
return "id = "+id + " name = "+name+" age = "+age+" gender = "+gender;
}
public String getId(){ return id; }
}
class StudentComparator implements Comparator<Student>{
public int compare(Student o1, Student o2) {
return o1.getId().compareTo(o2.getId());
}
}
public class Test5{
public static void main(String[] args){
Student student1 = new Student("003","张三",18,"男");
Student student2 = new Student("004","张四",20,"女");
Student student3 = new Student("002","张二",19,"男");
Student student4 = new Student("002","赵二",17,"女");
Student student5 = new Student("001","张一",18,"男");
Student student6 = new Student("005","张五",20,"男");
Set<Student> set = new TreeSet<Student>(new StudentComparator());
set.add(student1);
set.add(student2);
set.add(student3);
set.add(student4);
set.add(student5);
set.add(student6);
System.out.println("按照age排序后的" + set.size()+"个元素");
Iterator<Student> iterator = set.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next().toString());
}
}
}
import java.util.*;
public class QueueExample {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<String>();
queue.add("Alice");
queue.offer("Bob");
queue.offer("Clinton");
queue.offer("Jack");
System.out.print("queue的长度是"+queue.size()+" 它的元素有:");
printQueue(queue);
System.out.println("通过queue.peek()获得头元素:"+queue.peek());
System.out.print("queue.peek()调用之后,队列的元素有:");
printQueue(queue);
System.out.println("通过queue.poll()获得头元素:"+queue.poll());
System.out.print("queue.poll()调用之后,队列的元素有:");
printQueue(queue);
}
public static void printQueue(Queue<String> c){
Iterator<String> iterator = c.iterator();
while(iterator.hasNext())
System.out.print(iterator.next()+" ");
System.out.print("\n");
}
}
import java.util.*;
class Student{
private String id,name,gender;
private int age;
public Student(String id,String name,int age,String gender){
this.id = id; this.name = name;
this.age = age; this.gender = gender;
}
public String toString(){
return "id = "+id + " name = "+name+" age = "+age+" gender = "+gender;
}
public String getId(){ return id; }
}
class MapExample{
public static void main(String[] args){
Student student1 = new Student("001","张一",18,"男");
Student student2 = new Student("002","张二",20,"女");
Student student3 = new Student("003","张三",19,"男");
Student student4 = new Student("004","张四",17,"女");
Map<String,Student> map = new HashMap<String,Student>();
map.put(student1.getId(),student1);
map.put(student2.getId(),student2);
map.put(student3.getId(),student3);
map.put(student4.getId(),student4);
if(map.containsKey("003")==true){
System.out.println("map中包含key为003的学生对象");
System.out.println("map中学号003的对象信息是:"+
map.get("003"));
}
if(map.containsValue(student4) == true)
System.out.println("map中包含value为("+student4+")的学生对象");
map.remove("003");
System.out.println("删除学号为003的学生对象后");
Set<String> keys = map.keySet();
System.out.print("map的key共有" + keys.size() + "个,它们是:");
Iterator<String> iterator1 = keys.iterator();
while(iterator1.hasNext())
System.out.print(iterator1.next()+" ");
Collection<Student> values = map.values();
System.out.println("\nmap的value共有" + values.size() + "个,它们是:");
Iterator<Student> iterator2 = values.iterator();
while(iterator2.hasNext())
System.out.println(iterator2.next()+" ");
}
}
//例6.17 SortedMap的使用示例
import java.util.*;
class Student{
private String id,name,gender;
private int age;
public Student(String id,String name,int age,String gender){
this.id = id; this.name = name;
this.age = age; this.gender = gender;
}
public String toString(){
return "id = "+id + " name = "+name+" age = "+age+" gender = "+gender;
}
public String getId(){ return id; }
}
class SortedMapExample{
public static void main(String[] args){
Student student1 = new Student("004","张四",17,"女");
Student student2 = new Student("001","张一",18,"男");
Student student3 = new Student("003","张三",19,"男");
Student student4 = new Student("005","张五",19,"男");
Student student5 = new Student("002","张二",20,"女");
SortedMap<String,Student> map = new TreeMap<String,Student>();
map.put(student1.getId(),student1);
map.put(student2.getId(),student2);
map.put(student3.getId(),student3);
map.put(student4.getId(),student4);
map.put(student5.getId(),student5);
System.out.println("map的第一个键是:" + map.firstKey());
System.out.println("map的最后一个键是:" + map.lastKey());
Set<String> keys = map.keySet();
System.out.print("map的key共有" + keys.size() + "个,它们是:");
Iterator<String> iterator1 = keys.iterator();
while(iterator1.hasNext())
System.out.print(iterator1.next()+" ");
Collection<Student> values = map.values();
System.out.println("\nmap的value共有" + values.size() + "个,它们是:");
Iterator<Student> iterator2 = values.iterator();
while(iterator2.hasNext())
System.out.println(iterator2.next()+" ");
map = map.subMap("002","004");
values = map.values();
System.out.println("子映射的value共有" + values.size() + "个,它们是:");
iterator2 = values.iterator();
while(iterator2.hasNext())
System.out.println(iterator2.next()+" ");
}
}
import java.util.*;
interface Speakable{
public abstract void speak();
}
class Dog implements Speakable{
public void speak(){System.out.println("我是小狗,汪汪叫");}
}
class ShepherdDog extends Dog{
public void eat(){System.out.print("大口吃肉,流口水......");}
public void speak(){eat();System.out.println("我是牧羊犬,有肉吃才叫");}
}
class Cat implements Speakable{
public void speak(){System.out.println("我是小猫,喵喵叫");}
}
class Sheep implements Speakable{
public void speak(){System.out.println("我是绵羊,咩咩叫");}
}
class AnimalTool{
public static void animalSpeak(Speakable[] animals){
for(int i=0; i<animals.length;i++)
animals[i].speak();
}
public static void animalSpeak(LinkedList<Speakable> animals){
Iterator<Speakable> iterator = animals.iterator();
while(iterator.hasNext()){
Speakable animal = iterator.next();
animal.speak();
}
}
}
public class Test7 {
public static void main(String[] args) {
Speakable[] animals = new Speakable[4];
animals[0] = new Dog();
animals[1] = new Cat();
animals[2] = new Sheep();
animals[3] = new ShepherdDog();
AnimalTool.animalSpeak(animals);
LinkedList<Speakable> animals2 = new LinkedList<Speakable>();
animals2.add(new Dog());
animals2.add(new Cat());
animals2.add(new Sheep());
animals2.add(new ShepherdDog());
AnimalTool.animalSpeak(animals2);
}
}