import java.util.*;
import java.util.Map.Entry;
public class TestMuster {
public static void main(String[] args) {
//new TestMuster().testCollection();
//new TestMuster().testHashSet();
//new TestMuster().testList();
//new TestMuster().testMap();
new TestMuster().testCompositor();
}
public void testCollection(){
Collection cols = new HashSet(); //無序不重複
cols.add(12); //添加
cols.add(11);
cols.add(12);
cols.add(13);
cols.add(12);
cols.add(13);
cols.add(10);
cols.remove(13); //移除
Iterator irs = cols.iterator(); //重點是Iterator接口的枚舉遍歷
while(irs.hasNext()){
int is = (Integer)irs.next();
System.out.println("Set無序不重複is=="+is);
}
System.out.println("---------------------------------");
Collection coll = new LinkedList(); //有序可重複
coll.add(8);
coll.add(9);
coll.add(8);
Iterator irtl = coll.iterator();
while(irtl.hasNext()){
int il = (Integer)irtl.next();
System.out.println("List有序可重複il=="+il);
}
System.out.println("---------------------------------");
// 以ArrayList類爲例:集合元素的增刪改查
Collection cola = new ArrayList(); //和具體的實現類從理論上說沒有關係
// 往集合裏添加對象 add(Object o);
cola.add(1);
cola.add(2);
cola.add(2);
cola.add(3);
cola.add(4);
cola.add(2);
cola.add(3);
cola.add(4);
cola.remove(3); //從集合裏移除
//cola.remove(3);
Object[] boj = cola.toArray(); //集合裏數據更新的方法: 先清空在add, toArray(),就是暫存數組裏
cola.clear();
for(int i = 0; i < boj.length; i++){
if(boj[i].equals(2)){
boj[i] = 8;
}
cola.add(boj[i]);
}
Iterator irta = cola.iterator(); // 枚舉遍歷 java.util.Iterator接口的使用
while(irta.hasNext()){
int ia = (Integer)irta.next(); //轉化爲基礎類型包裝類整型類對象
System.out.println("i=="+ia);
}
int ias = cola.size();
System.out.println(ias);
System.out.println("---------------------------------");
}
// 添加複雜對象的HashSet類:順便測試對象的調用默認方法的順序
public void testHashSet(){
Set rset = new HashSet();
FuzaO fdx = new FuzaO();
fdx.setAge(20);
fdx.setUserId("26");
fdx.setUsername("xuechong");
rset.add(fdx);
Iterator itr = rset.iterator();
while(itr.hasNext()){
FuzaO str = (FuzaO)itr.next();
System.out.println(str); //重寫toString方法!
}
}
public void testList(){
List tis = new ArrayList();
FuzaO fdx = new FuzaO();
fdx.setAge(20);
fdx.setUserId("26");
fdx.setUsername("xuechong");
tis.add(fdx); //增加複雜對象
tis.add(3); //增加簡單對象
tis.add(5);
tis.add(10);
tis.remove(2); //刪除指定對象,2代表順序,即序列號,並不是代表個數
int io = tis.size(); //List裏對象的個數 int tis.size()
System.out.println("List裏的對象的個數是:"+io);
tis.set(1,"2"); //List裏這樣更新數據多方便啊!!!
tis.set(2,"2000");
System.out.println("tis.get(0)/n"+tis.get(0)); //從取數據的另外一種寫法
System.out.println("tis.get(1)/n"+tis.get(1));
Iterator itr = tis.iterator(); //集合的遍歷查詢模式
while(itr.hasNext()){
Object str = (Object)itr.next();
System.out.println(str); //重寫toString方法!
}
}
public void testMap(){
Map map1 = new HashMap();
//Map的增刪改查
//add, map1.put(Object o1, Object o2);
map1.put("a", "3");
map1.put("b", "2");
map1.put("c", "1");
map1.put("d","4");
//update, update的思想就是覆蓋原來的key值,其實還是add ,用put()方法
map1.put("a", "100");
map1.put("d", "hehehe");
//delete ,其實就是隻刪除key就行了
map1.remove("c");
Set mapset = map1.keySet();
Iterator itr = mapset.iterator();
while(itr.hasNext()){
String skey = (String)itr.next();
String svalue = (String)map1.get(skey); //value是根據key直接在Map裏拿
System.out.println("key=="+skey+",value=="+svalue);
}
System.out.println("-----");
Set setentry = map1.entrySet();
Iterator entryit = setentry.iterator();
while(entryit.hasNext()){
Entry en = (Entry)entryit.next();
String skey2 = (String)en.getKey();
String svalue2 = (String)en.getValue();
System.out.println("key2=="+skey2+",value2=="+svalue2);
}
System.out.println("--------------------------------");
}
public void testCompositor(){
Collection ctree = new TreeSet();
FuzaO ff1 = new FuzaO();
ff1.setAge(20);
ff1.setUserId("a");
ff1.setUsername("3");
ctree.add(ff1);
FuzaO ff2 = new FuzaO();
ff2.setAge(30);
ff2.setUserId("d");
ff2.setUsername("5");
ctree.add(ff2);
FuzaO ff3 = new FuzaO();
ff3.setAge(25);
ff3.setUserId("c");
ff3.setUsername("4");
ctree.add(ff3);
Iterator itr = ctree.iterator();
while(itr.hasNext()){
FuzaO f = (FuzaO)itr.next();
System.out.println(f);
}
}
}
class FuzaO implements Comparable{
// 設置方法:在source裏點擊:hasCode()和equals()重寫
private int age;
private String userId;
private String username;
@Override
public int compareTo(Object obj){
FuzaO f1 = (FuzaO)obj;
if(this.getUsername().compareTo(f1.getUsername()) > 0){
return 1;
}else if(this.getUsername().compareTo(f1.getUsername()) == 0){
return 0;
}else{
return -1;
}
}
@Override
public int hashCode() {
System.out.println("hashCode===========");
final int prime = 31;
int result = 1;
result = prime * result + ((userId == null) ? 0 : userId.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
System.out.println("equals()============");
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
FuzaO other = (FuzaO) obj;
if (userId == null) {
if (other.userId != null)
return false;
} else if (!userId.equals(other.userId))
return false;
return true;
}
@Override
public String toString() { //重寫toString方法!
System.out.println("toString=============");
return "age="+age+"/n"+"userId="+userId+"/n"+"username="+username;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}