import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import cn.domain.User;
public class UList {
/**
*
* list排序:Collections.sort(list, new NameComparator());
* list混洗:Collections.shuffle(list);
*
* Set 调用了User的hashcode()
* HashSet 无序
* TreeSet 有序 ,User 实现Comparable接口
* LinkedHashSet: 插入的顺序
*
* Map 调用了key: User的hashcode()
* HashMap: 无序
* TreeMap: 按键排序 User实现Comparable
* WeakHashMap: 无序
*
* treemap add:17 size:10000
* hashmap add:13 size:10000
* treemap add:14 size:10000
*
* hashset add:13 size:10000
* treeset add:19 size:10000
* linkedhashset add:15 size:10000
*
* arraylist add:2 size:10000 插入2毫秒 数组实现
arraylist delete:16 size:0 删除16毫秒
*
* linkedlist add:2 size:10000 插入2毫秒 单链表
linkedlist delete:3 size:0 删除3毫秒
*
*
*/
public static void main(String[] args) {
// String[] names =new String[]{"a","b","c"};
// List<User> list =new ArrayList<User>();
// long start=System.currentTimeMillis();
// int len =10000;
// for(int i=0;i<len;i++){
// list.add(new User(i+"","" + i));
// }
// long end=System.currentTimeMillis();
// System.out.println("arraylist add:"+(end-start)+" size:"+list.size());
// for(int i=0;i<len;i++){
// list.remove(0);
// }
//list.removeAll(list);
//list.clear();
//print(list);
//Collections.sort(list, new NameComparator());
//Collections.shuffle(list);
// print(list);
// start=System.currentTimeMillis();
// System.out.println("arraylist add:"+(start-end)+" size:"+list.size());
//Set<User> set =new HashSet<User>();//Set 调用了User的hashcode()
//Set<User> set =new TreeSet<User>();
Set<User> set =new LinkedHashSet<User>();
long start=System.currentTimeMillis();
int len =10000;
for(int i=0;i<len;i++){
set.add(new User(i+"","" + i));
}
long end=System.currentTimeMillis();
//printSet(set);
//set = Collections.unmodifiableSet(set);
System.out.println("arraylist add:"+(end-start)+" size:"+set.size());
//printSet(set);
//Map<String,User> map =new HashMap<String,User>();
//Map<String,User> map =new TreeMap<String,User>();
/*Map<String,User> map =new WeakHashMap<String,User>();
long start=System.currentTimeMillis();
int len =10;
for(int i=0;i<len;i++){
map.put(""+i, new User(i+"","" + i));
}
long end=System.currentTimeMillis();
printMap(map);
System.out.println("arraylist add:"+(end-start)+" size:"+map.size());
*/
//Map<User,Object> map =new HashMap<User,Object>();
//Map<User,Object> map =new TreeMap<User,Object>();
/*Map<User,Object> map =new WeakHashMap<User,Object>();
long start=System.currentTimeMillis();
int len =10000;
for(int i=0;i<len;i++){
map.put(new User(i+"","" + i),null);
}
long end=System.currentTimeMillis();
//printMap2(map);
System.out.println("treemap add:"+(end-start)+" size:"+map.size());
*/
}
static class NameComparator implements Comparator{
public int compare(Object o1, Object o2) {
if(!(o1 instanceof User)){
return 0;
}
if(!(o2 instanceof User)){
return 0;
}
User u1 =(User)o1;
User u2 = (User)o2;
String name1 = u1.getUserName();
String name2 = u2.getUserName();
return name1.compareTo(name2);
}
}
static void print(List<User> list){
User u=null;
for(int i=0;i<10;i++){
u = list.get(i);
System.out.println("id: "+ u.getUserId() +" name:"+u.getUserName());
}
}
static void printSet(Set<User> set){
User u=null;
Iterator<User> it = set.iterator();
int i=0;
while(it.hasNext()){
if(i>10)
break;
u = it.next();
System.out.println("id: "+ u.getUserId() +" name:"+u.getUserName());
i++;
}
}
static void printMap(Map<String,User> map){
Entry<String,User> u=null;
Set<Entry<String,User>> set =map.entrySet();
Iterator<Entry<String,User>> it = set.iterator();
int i=0;
while(it.hasNext()){
if(i>10)
break;
u = it.next();
System.out.println("key: "+ u.getKey() +" user:"+u.getValue().getUserName());
i++;
}
}
static void printMap2(Map<User,Object> map){
Entry<User,Object> u=null;
Set<Entry<User,Object>> set =map.entrySet();
Iterator<Entry<User,Object>> it = set.iterator();
int i=0;
while(it.hasNext()){
if(i>10)
break;
u = it.next();
System.out.println("key: "+ u.getKey().getUserName() +" val:"+u.getValue());
i++;
}
}
}