Java - 集合
阅读数:182 评论数:0
跳转到新版页面分类
python/Java
正文
一、Collection接口
Collection接口的iterator和toArray方法都用于获得集合中的“所有元素”。前者返回一个“iterator”对象,后者返回一个包含集合中所有元素的数组。
二、Set
Set可以存储null。
Set(接口)
|-EnumSet
|-SortedSet(接)
|-TreeSet
|-HashSet
|-LinkedHashSet
是基于Hash算法实现的,其性能通常优于TreeSet。在我们需要排序的功能时,我们才使用TreeSet。HashSet会调用对象的hashCode()方法来获得哈希码。TreeSet使用红黑树对元素进行排序。依靠TreeMap来实现。
不仅实现了Hash算法,可以在迭代时,按照元素加入集合时的顺序来显示对象。
三、List
List可以存储null,添加几个,存储几个。
Queue(接)
|- Deque(接)
|- LinkedList(实现List接口)
|-PriorityQueue
List(接)
|- ArrayList
|- Vector(历史集合,线程安全)
|- Stack(历史集合,线程安全)
内部采用数组实现
使用“链表”来实现。
方式一:
List<String> list = new ArrayList<String>();
String str01 = String("str01");
String str02 = String("str02");
list.add(str01);
list.add(str02);
方式二:
List<String> list = new ArrayList<String>(){{add("str01"); add("str02");}};
方式三:
List<String> list = Arrays.asList("11","22","33")
四、Map
Map(接)
|- EnumMap
|- IdentityHashMap
|-HashMap
|- LinkedHashMap
|- Hashtable(历史集合)
|- Properties(历史集合)
|-SortedMap(接)
|- TreeMap
|-WeakHashMap
可以使用红黑树来对键对象排序。和Set类似,HashMap的速度通常比TreeMap快,只有在需要排序的功能时,才使用TreeMap。HashMap允许null key和null value,而hashtable不允许。
实现与HashMap的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序可以是插入顺序或者是访问顺序。
这种Map的特点是,当除了自身有对key的引用外,此key没有其他引用那么此map会自动丢弃此值。
HashMap通过equal来比较key的值是否相同,而IdentityHashMap通过==来比较key的引用地址是否相同。
Map hashMap=new HashMap();
hashMap.put(new String("张三"), "100");
hashMap.put(new String("张三"), "100");
System.out.println(hashMap.size());
//打印结果为1.
Map identityHashMap=new IdentityHashMap();
identityHashMap.put(new String("张三"), "100");
identityHashMap.put(new String("张三"), "100");
System.out.println(identityHashMap.size());
//打印结果为2.
Map<String, String> m3= Maps.newHashMap();
m3.putAll(m1);
m1.entrySet().removeAll(m2.entrySet());//获得差集
m2.entrySet().removeAll(m3.entrySet());//获得差集
五、工具类
Java提供了Arrays类来封装数组。
是集合对象的工具类,类中方法都是静态的,可以直接以类名.静态方法()的形式调用
六、历史集合类
Vector, Stack, Enumeration,Hashtable
由于Vector,Stack, Hashtable, Enumeration都使用了同步机制,并发性能差。
Properties和BitSet由于有着特殊用途,所以不还常使用。