import java.lang.ref.SoftReference;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
/**
* Class description
*
* @author houshengyong
* @since 2015-5-26
*/
public class test4HashMap {
/**
* @param args
*/
public static void main(String[] args) {
MyClass myClass = new MyClass("123");
HashMap<Integer, SoftReference<MyClass>> map = new HashMap<>();
map.put(myClass.hashCode(), new SoftReference<>(myClass));
map.put(myClass.hashCode(), new SoftReference<>(myClass));
myClass = new MyClass("456");
map.put(myClass.hashCode(), new SoftReference<>(myClass));
System.out.println(map.size());
Iterator<Entry<Integer, SoftReference<MyClass>>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Entry<Integer, SoftReference<MyClass>> entry = iterator.next();
SoftReference<MyClass> val = entry.getValue();
MyClass item = val.get();
if (null != item) {
System.out.println(item.mString);
}
//
// map.remove(item.hashCode());
// Exception in thread "main" java.util.ConcurrentModificationException
// at java.util.HashMap$HashIterator.nextNode(Unknown Source)
// at java.util.HashMap$EntryIterator.next(Unknown Source)
// at java.util.HashMap$EntryIterator.next(Unknown Source)
// at test4HashMap.main(test4HashMap.java:30)
}
map.remove(myClass.hashCode());
// System.out.println(map.size());
listHashMap();
listHashMap1();
}
public static class MyClass {
String mString;
public MyClass(String str) {
mString = str;
}
}
@SuppressWarnings("unchecked")
public static void listHashMap1() {
HashMap hashmap = new HashMap();
for (int i = 0; i < 1000; i++) {
hashmap.put("" + i, "thanks");
}
long bs = Calendar.getInstance().getTimeInMillis();
Iterator iterator = hashmap.keySet().iterator();
while (iterator.hasNext()) {
System.out.print(hashmap.get(iterator.next()));
}
System.out.println();
System.out.println(Calendar.getInstance().getTimeInMillis() - bs);
// listHashMap();
}
public static void listHashMap() {
java.util.HashMap hashmap = new java.util.HashMap();
for (int i = 0; i < 1000; i++) {
hashmap.put("" + i, "thanks");
}
long bs = Calendar.getInstance().getTimeInMillis();
java.util.Iterator it = hashmap.entrySet().iterator();
while (it.hasNext()) {
java.util.Map.Entry entry = (java.util.Map.Entry) it.next();
// entry.getKey() ����������Ӧ�ļ�
// entry.getValue() ����������Ӧ��ֵ
System.out.print(entry.getValue());
}
System.out.println();
System.out.println(Calendar.getInstance().getTimeInMillis() - bs);
}
}