//重写hashCode方法就必须重写equals方法
import java.util.* ;
class Person
{
private String name ;
private int age ;
public Person(String name,int age)
{
this.name = name ;
this.age = age ;
}
public String toString()
{
return "姓名:"+this.name+",年龄:"+this.age ;
}
public boolean equals(Object obj)
{
return true ;
}
public int hashCode()
{
return this.name.hashCode()+this.age * 1000 ;
}
};
public class AdvDemo02
{
public static void main(String args[])
{
Map m = new HashMap() ;
m.put(new Person("张三",30),"张三") ;
System.out.println(m.get(new Person("张三",30))) ;
}
};
//重新克隆方法注意两点,一是实现接口,二是调用父类的克隆方法扩大克隆方法的访问权限
import java.util.* ;
// 也是一个标识接口
class Person implements Cloneable
{
String name ;
int age ;
public Person(String name,int age)
{
this.name = name ;
this.age = age ;
}
public String toString()
{
return "姓名:"+this.name+",年龄:"+this.age ;
}
public Object clone()
throws CloneNotSupportedException
{
return super.clone() ;
}
};
public class AdvDemo03
{
public static void main(String args[]) throws Exception
{
Person p1 = new Person("张三",30) ;
Person p2 = (Person)p1.clone() ;
p2.name = "李四" ;
System.out.println(p1) ;
System.out.println(p2) ;
}
};
//// 覆写compareTo方法就是排序规则
import java.util.* ;
class Person implements Comparable
{
private String name ;
private int age ;
private float score ;
public Person(String name,int age,float score)
{
this.name = name ;
this.age = age ;
this.score = score ;
}
public String toString()
{
return "姓名:"+this.name+",年龄:"+this.age+",成绩:"+this.score ;
}
// 覆写compareTo方法就是排序规则
public int compareTo(Object obj)
{
Person p = (Person)obj ;
if(p.score>this.score)
{
return 1 ;
}
else if(p.score<this.score)
{
return -1 ;
}
else
{
// 如果成绩相等则判断年龄
if(p.age>this.age)
{
return 1 ;
}
else if(p.age<this.age)
{
return -1 ;
}
else
{
return 0 ;
}
}
}
};
public class AdvDemo05
{
public static void main(String args[])
{
Person p[] = new Person[5] ;
p[0] = new Person("张三",20,96) ;
p[1] = new Person("李四",19,96) ;
p[2] = new Person("王五",19,97) ;
p[3] = new Person("赵六",21,78) ;
p[4] = new Person("孙七",20,80) ;
Arrays.sort(p) ;
for(int i=0;i<p.length;i++)
{
System.out.println(p[i]) ;
}
}
};
import java.util.* ;
class Person implements Comparable
{
private String name ;
private int age ;
private float score ;
public Person(String name,int age,float score)
{
this.name = name ;
this.age = age ;
this.score = score ;
}
public String toString()
{
return "姓名:"+this.name+",年龄:"+this.age+",成绩:"+this.score ;
}
// 覆写compareTo方法就是排序规则
public int compareTo(Object obj)
{
Person p = (Person)obj ;
if(p.score>this.score)
{
return 1 ;
}
else if(p.score<this.score)
{
return -1 ;
}
else
{
// 如果成绩相等则判断年龄
if(p.age>this.age)
{
return 1 ;
}
else if(p.age<this.age)
{
return -1 ;
}
else
{
return 0 ;
}
}
}
};
public class AdvDemo06
{
public static void main(String args[])
{
Set s = new TreeSet() ;
s.add(new Person("张三",20,96)) ;
s.add(new Person("李四",19,96)) ;
s.add(new Person("王五",19,97)) ;
s.add(new Person("赵六",21,78)) ;
s.add(new Person("孙七",20,80)) ;
Iterator iter = s.iterator() ;
while(iter.hasNext())
{
System.out.println(iter.next()) ;
}
}
};
//集合和类集接口的综合应用
import java.util.* ;
interface Book
{
// 书的价格、书的名字、书的信息
public float getPrice() ;
public String getName() ;
public String getInfo() ;
}
class ChildBook implements Book
{
private String name ;
private float price ;
private String info ;
public ChildBook(String name,float price,String info)
{
this.setName(name) ;
this.setPrice(price) ;
this.setInfo(info) ;
}
public String getName()
{
return this.name ;
}
public float getPrice()
{
return this.price ;
}
public String getInfo()
{
return this.info ;
}
public void setName(String name)
{
this.name = name ;
}
public void setPrice(float price)
{
this.price = price ;
}
public void setInfo(String info)
{
this.info = info ;
}
public String toString()
{
return "儿童书:书名:"+this.getName()+",价格:"+this.price+",简介:"+this.getInfo() ;
}
};
class ComputerBook implements Book
{
private String name ;
private float price ;
private String info ;
public ComputerBook(String name,float price,String info)
{
this.setName(name) ;
this.setPrice(price) ;
this.setInfo(info) ;
}
public String getName()
{
return this.name ;
}
public float getPrice()
{
return this.price ;
}
public String getInfo()
{
return this.info ;
}
public void setName(String name)
{
this.name = name ;
}
public void setPrice(float price)
{
this.price = price ;
}
public void setInfo(String info)
{
this.info = info ;
}
public String toString()
{
return "电脑书:书名:"+this.getName()+",价格:"+this.price+",简介:"+this.getInfo() ;
}
};
class BookShop
{
private String name ;
// 一个书店包含多种书
private List allBooks ;
public BookShop()
{
this.allBooks = new ArrayList() ;
}
public BookShop(String name)
{
this() ;
this.setName(name) ;
}
// 得到全部的书
public List getAllBooks()
{
return this.allBooks ;
}
public void append(Book book)
{
this.allBooks.add(book) ;
}
public void delete(Book book)
{
this.allBooks.remove(book) ;
}
// 根据书的名字,去找到一本书
public Book findByName(String name)
{
// 从已有的数据中进行依次查询
Book book = null ;
Iterator iter = this.allBooks.iterator() ;
while(iter.hasNext())
{
// 进行依次的比较
Book temp = (Book)iter.next() ;
if(name.equals(temp.getName()))
{
// 如果名字相等,则表示找到了
book = temp ;
break ;
}
}
return book ;
}
// 书的检索,书的模糊查询
public List index(String keyWord)
{
List l = new ArrayList() ;
Iterator iter = this.allBooks.iterator() ;
while(iter.hasNext())
{
Book b = (Book)iter.next() ;
if(b.getName().indexOf(keyWord)!=-1)
{
l.add(b) ;
}
}
return l ;
}
public void setName(String name)
{
this.name = name ;
}
public String getName()
{
return this.name ;
}
};
public class ColDemo01
{
public static void main(String args[])
{
Book b1 = new ChildBook("一千零一夜",10.0f,"一些传说故事") ;
Book b2 = new ChildBook("小鸡吃大灰狼",20.0f,"一件奇怪的事情") ;
Book b3 = new ChildBook("HALIBOTE",25.0f,"魔幻故事") ;
Book b4 = new ComputerBook("JAVA",65.0f,"JAVA 语言的核心技术") ;
Book b5 = new ComputerBook("C++",50.0f,"C++ 语言的核心技术") ;
Book b6 = new ComputerBook("Linux",50.0f,"服务器搭建") ;
BookShop bs = new BookShop("MLDN 网上书店") ;
bs.append(b1) ;
bs.append(b2) ;
bs.append(b3) ;
bs.append(b4) ;
bs.append(b5) ;
bs.append(b6) ;
// print(bs.getAllBooks()) ;
// print(bs.index("A")) ;
// 假设将C++这本书从书店删除掉
Book b = bs.findByName("C++") ;
// System.out.println(b) ;
bs.delete(b) ;
print(bs.getAllBooks()) ;
}
public static void print(List all)
{
Iterator iter = all.iterator() ;
while(iter.hasNext())
{
Book b = (Book)iter.next() ;
System.out.println(b) ;
}
}
};
import java.util.* ;
class Person
{
private String name ;
private int age ;
private List<Email> allEmails ;
public Person()
{
this.allEmails = new ArrayList<Email>() ;
}
public Person(String name,int age)
{
this() ;
this.setName(name) ;
this.setAge(age) ;
}
public List getAllEmails()
{
return this.allEmails ;
}
public void setAllEmails(List allEmails)
{
this.allEmails = allEmails ;
}
public void setName(String name)
{
this.name = name ;
}
public void setAge(int age)
{
this.age = age ;
}
public String getName()
{
return this.name ;
}
public int getAge()
{
return this.age ;
}
public String toString()
{
return "姓名:"+this.getName()+",年龄:"+this.getAge() ;
}
};
class Email
{
private String url ;
private String userName ;
private String flag ;
public Email(String url,String userName,String flag)
{
this.setUrl(url) ;
this.setUserName(userName) ;
this.setFlag(flag) ;
}
public void setUrl(String url)
{
this.url = url ;
}
public void setUserName(String userName)
{
this.userName = userName ;
}
public void setFlag(String flag)
{
this.flag = flag ;
}
public String getUrl()
{
return this.url ;
}
public String getUserName()
{
return this.userName ;
}
public String getFlag()
{
return this.flag ;
}
public String toString()
{
return "网站地址:"+this.getUrl()+",EMAIL名称:"+this.getUserName()+this.getFlag() ;
}
};
public class ColDemo01
{
public static void main(String args[])
{
Person p = new Person("LXH",28) ;
Email e1 = new Email("www.163.com","mldnqa","@163.com") ;
Email e2 = new Email("www.263.com","li_xing_hua","@263.net") ;
Email e3 = new Email("www.163.com","mldnkf","@163.com") ;
p.getAllEmails().add(e1) ;
p.getAllEmails().add(e2) ;
p.getAllEmails().add(e3) ;
// 一个人拥有3个email地址
// 通过输出体现
List<Email> all = p.getAllEmails() ;
Iterator iter = all.iterator() ;
System.out.println(p) ;
while(iter.hasNext())
{
Email e = (Email)iter.next() ;
System.out.println(" |- "+e) ;
}
}
};
import java.util.* ;
class Student
{
private String name ;
private List allSubjects ;
public Student()
{
this.allSubjects = new ArrayList() ;
}
public Student(String name)
{
this() ;
this.setName(name) ;
}
public List getAllSubjects()
{
return this.allSubjects ;
}
public void setName(String name)
{
this.name = name ;
}
public String getName()
{
return this.name ;
}
public String toString()
{
return "学生姓名:"+this.getName() ;
}
};
class Subject
{
private String name ;
private List allStudents ;
public Subject()
{
this.allStudents = new ArrayList() ;
}
public Subject(String name)
{
this() ;
this.setName(name) ;
}
public List getAllStudents()
{
return this.allStudents ;
}
public void setName(String name)
{
this.name = name ;
}
public String getName()
{
return this.name ;
}
public String toString()
{
return "课程名称:"+this.getName() ;
}
};
public class ColDemo02
{
public static void main(String args[])
{
Student s1 = new Student("张三") ;
Student s2 = new Student("李四") ;
Student s3 = new Student("王五") ;
Student s4 = new Student("赵六") ;
Student s5 = new Student("孙七") ;
Subject su1 = new Subject("C++") ;
Subject su2 = new Subject("JAVA") ;
Subject su3 = new Subject("软件工程") ;
// 多个学生选择同一门课程
su1.getAllStudents().add(s1) ;
su1.getAllStudents().add(s2) ;
su1.getAllStudents().add(s3) ;
su2.getAllStudents().add(s2) ;
su2.getAllStudents().add(s4) ;
su3.getAllStudents().add(s5) ;
s1.getAllSubjects().add(su1) ;
s2.getAllSubjects().add(su1) ;
s2.getAllSubjects().add(su2) ;
s3.getAllSubjects().add(su1) ;
s4.getAllSubjects().add(su2) ;
s5.getAllSubjects().add(su3) ;
print(su1) ;
print(su2) ;
print(su3) ;
System.out.println("------------------------") ;
print(s1) ;
print(s2) ;
print(s3) ;
print(s4) ;
print(s5) ;
}
public static void print(Subject s)
{
System.out.println("* 课程信息:"+s) ;
Iterator iter = s.getAllStudents().iterator() ;
while(iter.hasNext())
{
System.out.println(" |- "+iter.next()) ;
}
}
public static void print(Student s)
{
System.out.println("* 学生信息:"+s) ;
Iterator iter = s.getAllSubjects().iterator() ;
while(iter.hasNext())
{
System.out.println(" |- "+iter.next()) ;
}
}
};
//简单工厂模式
package org.lxh.demo ;
interface Fruit
{
// 生长
public void grow() ;
// 采摘
public void pick() ;
}
class Apple implements Fruit
{
public void grow()
{
System.out.println("苹果在生长。。。 ") ;
}
public void pick()
{
System.out.println("摘苹果。。。") ;
}
};
class Orange implements Fruit
{
public void grow()
{
System.out.println("橘子在生长。。。 ") ;
}
public void pick()
{
System.out.println("摘橘子。。。") ;
}
};
class Factory
{
public static Fruit getFruitInstance()
{
return new Orange() ;
}
};
public class FactoryDemo01
{
public static void main(String args[])
{
Fruit f = Factory.getFruitInstance() ;
f.grow() ;
f.pick() ;
}
};
package org.lxh.demo ;
interface Fruit
{
// 生长
public void grow() ;
// 采摘
public void pick() ;
}
class Apple implements Fruit
{
public void grow()
{
System.out.println("苹果在生长。。。 ") ;
}
public void pick()
{
System.out.println("摘苹果。。。") ;
}
};
class Orange implements Fruit
{
public void grow()
{
System.out.println("橘子在生长。。。 ") ;
}
public void pick()
{
System.out.println("摘橘子。。。") ;
}
};
class Factory
{
public static Fruit getFruitInstance(String type)
{
Fruit f = null ;
if("Apple".equals(type))
{
f = new Apple() ;
}
if("Orange".equals(type))
{
f = new Orange() ;
}
return f ;
}
};
public class FactoryDemo02
{
public static void main(String args[])
{
if(args.length==0)
{
System.out.println("必须输入一个要使用的名称") ;
System.exit(1) ;
}
Fruit f = Factory.getFruitInstance(args[0]) ;
if(f!=null)
{
f.grow() ;
f.pick() ;
}
else
{
System.out.println("没有发现这个类型。") ;
}
}
};
package org.lxh.demo ;
interface Fruit
{
// 生长
public void grow() ;
// 采摘
public void pick() ;
}
class Apple implements Fruit
{
public void grow()
{
System.out.println("苹果在生长。。。 ") ;
}
public void pick()
{
System.out.println("摘苹果。。。") ;
}
};
class Orange implements Fruit
{
public void grow()
{
System.out.println("橘子在生长。。。 ") ;
}
public void pick()
{
System.out.println("摘橘子。。。") ;
}
};
class Cherry implements Fruit
{
public void grow()
{
System.out.println("樱桃在生长。。。 ") ;
}
public void pick()
{
System.out.println("摘樱桃。。。") ;
}
};
class Banana implements Fruit
{
public void grow()
{
System.out.println("香蕉在生长。。。 ") ;
}
public void pick()
{
System.out.println("摘香蕉。。。") ;
}
};
class Factory
{
public static Fruit getFruitInstance(String type)
{
Fruit f = null ;
// 通过Class类完成
try
{
f = (Fruit)Class.forName("org.lxh.demo."+type).newInstance() ;
}
catch (Exception e)
{
}
return f ;
}
};
public class FactoryDemo04
{
public static void main(String args[])
{
if(args.length==0)
{
System.out.println("必须输入一个要使用的名称") ;
System.exit(1) ;
}
Fruit f = Factory.getFruitInstance(args[0]) ;
if(f!=null)
{
f.grow() ;
f.pick() ;
}
else
{
System.out.println("没有发现这个类型。") ;
}
}
};
package org.lxh.demo ;
import java.io.* ;
import java.util.* ;
interface Fruit
{
// 生长
public void grow() ;
// 采摘
public void pick() ;
}
class Apple implements Fruit
{
public void grow()
{
System.out.println("苹果在生长。。。 ") ;
}
public void pick()
{
System.out.println("摘苹果。。。") ;
}
};
class Orange implements Fruit
{
public void grow()
{
System.out.println("橘子在生长。。。 ") ;
}
public void pick()
{
System.out.println("摘橘子。。。") ;
}
};
class Cherry implements Fruit
{
public void grow()
{
System.out.println("樱桃在生长。。。 ") ;
}
public void pick()
{
System.out.println("摘樱桃。。。") ;
}
};
class Banana implements Fruit
{
public void grow()
{
System.out.println("香蕉在生长。。。 ") ;
}
public void pick()
{
System.out.println("摘香蕉。。。") ;
}
};
class Factory
{
public static Fruit getFruitInstance(String type)
{
Fruit f = null ;
// 通过Class类完成
try
{
f = (Fruit)Class.forName(type).newInstance() ;
}
catch (Exception e)
{
System.out.println(e) ;
}
return f ;
}
};
// 定义一个新类,此类可以从键盘输入数据
class InputData
{
BufferedReader buf = null ;
public InputData()
{
buf = new BufferedReader(new InputStreamReader(System.in)) ;
}
public String getString()
{
String str = null ;
try
{
str = buf.readLine() ;
}
catch (Exception e)
{
}
return str ;
}
};
public class FactoryDemo05
{
public static void main(String args[])
{
Properties p = new Properties() ;
p.setProperty("a","org.lxh.demo.Apple") ;
p.setProperty("o","org.lxh.demo.Orange") ;
p.setProperty("b","org.lxh.demo.Banana") ;
p.setProperty("c","org.lxh.demo.Cherry") ;
System.out.println(p) ;
// 加入一个可以从键盘输入数据的类
System.out.print("输入要使用的子类代码:") ;
String code = new InputData().getString() ;
System.out.println(p.getProperty(code)) ;
Fruit f = Factory.getFruitInstance(p.getProperty(code)) ;
if(f!=null)
{
f.grow() ;
f.pick() ;
}
else
{
System.out.println("没有发现这个类型。") ;
}
}
};
package org.lxh.demo ;
import java.io.* ;
import java.util.* ;
interface Fruit
{
// 生长
public void grow() ;
// 采摘
public void pick() ;
}
class Apple implements Fruit
{
public void grow()
{
System.out.println("苹果在生长。。。 ") ;
}
public void pick()
{
System.out.println("摘苹果。。。") ;
}
};
class Orange implements Fruit
{
public void grow()
{
System.out.println("橘子在生长。。。 ") ;
}
public void pick()
{
System.out.println("摘橘子。。。") ;
}
};
class Cherry implements Fruit
{
public void grow()
{
System.out.println("樱桃在生长。。。 ") ;
}
public void pick()
{
System.out.println("摘樱桃。。。") ;
}
};
class WaterMelon implements Fruit
{
public void grow()
{
System.out.println("西瓜在生长。。。") ;
}
public void pick()
{
System.out.println("摘西瓜。。。") ;
}
};
class Banana implements Fruit
{
public void grow()
{
System.out.println("香蕉在生长。。。 ") ;
}
public void pick()
{
System.out.println("摘香蕉。。。") ;
}
};
class DD implements Fruit
{
public void grow()
{
System.out.println("DD。。。 ") ;
}
public void pick()
{
System.out.println("摘DD。。。") ;
}
};
class Factory
{
public static Fruit getFruitInstance(String type)
{
Fruit f = null ;
// 通过Class类完成
try
{
f = (Fruit)Class.forName(type).newInstance() ;
}
catch (Exception e)
{
System.out.println(e) ;
}
return f ;
}
};
// 定义一个新类,此类可以从键盘输入数据
class InputData
{
BufferedReader buf = null ;
public InputData()
{
buf = new BufferedReader(new InputStreamReader(System.in)) ;
}
public String getString()
{
String str = null ;
try
{
str = buf.readLine() ;
}
catch (Exception e)
{
}
return str ;
}
};
class Init
{
public static Properties getPropertiesInit()
{
Properties p = new Properties() ;
try
{
p.loadFromXML(new FileInputStream("lxh.xml")) ;
}
catch (Exception e)
{
}
return p ;
}
};
public class FactoryDemo06
{
public static void main(String args[])
{
Properties p = new Properties() ;
p = Init.getPropertiesInit() ;
System.out.println(p) ;
// 加入一个可以从键盘输入数据的类
System.out.print("输入要使用的子类代码:") ;
String code = new InputData().getString() ;
System.out.println(p.getProperty(code)) ;
Fruit f = Factory.getFruitInstance(p.getProperty(code)) ;
if(f!=null)
{
f.grow() ;
f.pick() ;
}
else
{
System.out.println("没有发现这个类型。") ;
}
}
};
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>MLDN --> LXH</comment>
<entry key="b">org.lxh.demo.Banana</entry>
<entry key="a">org.lxh.demo.Apple</entry>
<entry key="o">org.lxh.demo.Orange</entry>
<entry key="c">org.lxh.demo.Cherry</entry>
<entry key="d">org.lxh.demo.DD</entry>
</properties>
import java.io.* ;
import java.util.* ;
public class Demo
{
public static void main(String args[]) throws Exception
{
Properties p = new Properties() ;
/*
p.setProperty("a","org.lxh.demo.Apple") ;
p.setProperty("o","org.lxh.demo.Orange") ;
p.setProperty("b","org.lxh.demo.Banana") ;
p.setProperty("c","org.lxh.demo.Cherry") ;
// 在文件中保存一段数据,此数据为以上的数据内容
p.storeToXML(new FileOutputStream("lxh.xml"),"MLDN --> LXH") ;
*/
// 需要从文件中读取要Properties中的属性
p.loadFromXML(new FileInputStream("lxh.xml")) ;
System.out.println(p) ;
}
};