Java Collection框架:你可能不知道的一些小知识
2009-04-23 22:04
831 查看
关于Java Collection Framework,你可能已经知道如下一些事实
Vector是线程安全的,ArrayList不是
ArrayList的读操作比LinkedList快,LinkedList的append操作比ArrayList快
Set中不可能有两个相等的元素,也就是说,如果e1和e2都在同一个Set中,那么不可能有e1.equals(e2)
HashMap是线程不安全的,HashTable是线程安全的
但是你可能还不知道或者不了解这些事情:
LinkedList不是线程安全的
不管是在多线程还是单线程的环境下,ArrayList都要比Vector快很多倍
Set中可以插入null,不过最多只会有一个
HashMap中可以插入null,HashTable中不行
TreeSet使用compareTo代替equals判断是否两个元素相等
HashMap中的元素,无论是keySet还是valueSet,都不一定是按照插入时间先后排序的,HashSet也一样
对于非线程安全的类,比如HashMap,ArrayList,TreeSet,可以使用Collections.synchronizedXXX方法(比如synchronizedSet,synchronizedList,synchronizedMap)
你可以使用Collections.unmodifiableList来构建出一个不能被修改的List
你可以使用Arrays.equals来判断两个数组是否相等
WeakHashMap使用元素的引用而不是值作为key,也就是说必须在引用相同(a==b)的情况下才能找到相关的值
对于WeakHashMap,一旦引用失效,相应的值也就不存在了,比如下面一段代码中:
view plaincopy to clipboardprint?
public class TestHashMap {
public static WeakHashMap wHmp= new WeakHashMap();
public static void main(String args[]){
String s1 = new String("one");
wHmp.put(s1,new Integer(1));
addObject(wHmp);
Set setHmp= wHmp.keySet();
for(Iterator it=setHmp.iterator();it.hasNext();){
System.out.println(wHmp.get(it.next()));
}
}
public static void addObject(WeakHashMap wHmp){
String s2 = new String("two");
String s3 = new String("three");
wHmp.put(s2,new Integer(2));
wHmp.put(s3,new Integer(3));
s2=null;
s3=null;
System.gc();
}
}
public class TestHashMap { public static WeakHashMap wHmp= new WeakHashMap(); public static void main(String args[]){ String s1 = new String("one"); wHmp.put(s1,new Integer(1)); addObject(wHmp); Set setHmp= wHmp.keySet(); for(Iterator it=setHmp.iterator();it.hasNext();){ System.out.println(wHmp.get(it.next())); } } public static void addObject(WeakHashMap wHmp){ String s2 = new String("two"); String s3 = new String("three"); wHmp.put(s2,new Integer(2)); wHmp.put(s3,new Integer(3)); s2=null; s3=null; System.gc(); } }
最后打印出来的结果只有"one”
原文发表于: http://www.ondev.net/post/show/565
相关文章推荐
- Java学习笔记----你可能不知道那些知识,对象复制与引用
- Java基础知识强化之集合框架笔记08:Collection集合自定义对象并遍历案例(使用迭代器)
- 黑马程序员_Java第14天知识总结_集合类(集合框架)_Collection_迭代器_List_Set_HashSet
- 黑马程序员-5-java-Collection集合类知识串讲(4)-集合框架工具类Utilities
- Java基础知识强化之集合框架笔记12:Collection集合存储字符串并遍历
- Java基础知识强化之集合框架笔记05:Collection集合的遍历
- Java基础知识强化之集合框架笔记11:Collection集合之迭代器的原理及源码解析
- Java基础知识强化之集合框架笔记13:Collection集合存储学生对象并遍历
- Java 集合框架分析:JAVA集合中的一些边边角角的知识
- Java基础知识强化之集合框架笔记07:Collection集合的遍历之迭代器遍历
- Java反射 (一些总结性知识,可能不全面)
- Java学习第17天:集合框架Collection的知识补充和其他类(还有增强for)
- Java基础知识强化之集合框架笔记10:Collection集合使用的步骤
- 你可能不知道的Java基础知识(一)
- 你可能不知道的一些Go Packages知识
- 关于java web的一些框架知识整理
- Java基础知识强化之集合框架笔记03:Collection集合的功能概述
- Java基础知识强化之集合框架笔记06:Collection集合存储自定义对象并遍历的案例
- Java学习笔记----你可能不知道那些知识,对象复制与引用
- java一些最基础的知识,不知道去查…