集合框架

来源:互联网 发布:网络摄像机ip搜索软件 编辑:程序博客网 时间:2024/06/05 14:53

集合概念

集合Collection是容器类,用来装载对象,基础类型会自动装箱,长度是不固定的,数组长度是固定的,一般开发中,80%用集合,20%用数组

集合体系

Collection

Set 无序,不重复,可以有一个null

HashSet add、remove、size
TreeSet 所有元素必须实现comparable接口

List 有序,可以重复,可以有null

ArrayList 用得最多的,add、remove、get、size
Vector 同上,线程安全,效率低
LinkedList 多了位于首位操作的方法,get、remove、add

Map 映射key-value(key不允许重复,可以有一个null,重复添加会被覆盖)

HashMap 用得比较多,put(key,value)、remove(key)、keySet()、values()、entrySet()
Hashtable 线程安全,不允许出现null
TreeMap 同TreeSet一样,key元素必须要实现comparable接口

List接口(除了有Collection接口方法外,还有特殊方法)

1.List是一个有序的Collection接口,可以通过下标访问元素get(i2.可以添加可重复的元素,包括多个null元素,add(i,元素),i可以等于size,大于size会越界3.打印List的三种遍历方法    普通for循环,get(i)访问元素    增强型for循环,foreach(取的元素类型,容器名)    迭代器(解决并发修改)4.ArrayList和LinkedList在内存中有区别,各有各的特殊方法

Set接口

1.Set是一种无序,去重复的Collection集合,在add时系统“随便”排序2.HashSet打印可以用迭代器和增强型for循环3.TreeSet是一个有序,去重复的集合,不纯种的Set

排序

1.泛型:只是一种替换手段,只能放指定类型或者该类型的子类2.泛型如果是基础数据类型(升序)、String类型(字典顺序),TreeSet在add的时候就会自动排序,List可以用Collections.sort(list)排序;泛型如果是对象,需要实现comparable<>接口,重写compareTo方法 或者是 实现 comparator<>接口,重写compare方法3.comparable比较器:用自己和其他对象比较(只能创建一个比较器)        Collections.sort(list);  comparator比较器:用两个对象来进行比较(创建多个比较器)        Collections.sort(list, new sort());

Map接口

1.没有继承Collection接口,Map提供三种集合视图:key视图、value视图、key-value视图。其中key不能重复,value可以是对象2.HashMap(Map的完美实现)提供了两个方法      put(key,value) 把一组键值放入Map    getkey) 从Map集合中将key的value值取出    remove() 移除的同时,返回value的值3.遍历HashMap 提供三种视图    Set集:Set<Integer> keyset = map.keySet();把key集合提取出来,foreach遍历或者用迭代器打印出来,可以打印value    value集:Collection<String> c  =map.values();遍历同上,打印不了key,打印出来的顺序是key值的升序    key-value视图:Set<Entry<Integer, String>> entrySet = hm.entrySet();有点复杂,先凉一边;两种方式打印同上4.面试题:Hashtable和HashMap区别    (1)命名有问题    (2)线程同步,Hashtable同步,但是效率低    (3)HashMap键值可以是NULL,键只允许一个,Hashtable键值都不允许为null5.map重复添加key会覆盖6.TreeMap和TreeSet一样的,TreeMap和HashMap在add会自动排序,但如果要比较对象,HashMap会出错,只有TreeMap才能实现比较器,这就是有序和无序的区别

数据结构(系统中集合的处理)

1.堆栈Stack:先进后出,试用ArrayList和数组(搬家:sysotem.arraycopy)实现putget、pop
原创粉丝点击