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;
}
}