这是什么啊

8.java集合总结

数组:存储一组相同数据类型的数据结构,长度固定不能改
*charAt可以遍历字符串
数据结构:存储数据的特点
*集合中存储的都是对象的引用(地址)
? 通配符。也可以理解为占位符。
泛型的限定;
基本数据类型和静态成员不能使用泛型
*在返回值类型前加泛型
*compareAble接口 实现此接口必须实现compareto方法 让对象本身具备比较性
*无源码,不能让自身具备比较性,则实现comparator,可以实现同一类对象有多种不同的排序方式
*需要自定义一个比较器类,不需要对象自身具有比较性
? extends E: 可以接收E类型或者E的子类型。上限。
? super E: 可以接收E类型或者E的父类型。下限
------Collection-----------------------------------------------------------------------------
       |--List:元素有序,可重复(equals比较)。集合体系有索引。独有ListIterator
              |--ArrayList: 底层数据结构
     数组 特点:查询速度很快。但是(频繁)增删稍慢。线程不同步。
              |--LinkedList:底层数据结构 双向链表 特点:增删速度很快,查询稍慢。线程不同步。实现了队列(Queue)接口(实现接口Duque双端队列用push和pop也可以用offer和
     *poll),所以可以模拟栈和队列(用Queue中的offer和poll方法)
              |--Vector:    底层数据结构 数组(向量) 特点  线程同步。被ArrayList替代了。因为效率低。枚举就是Vector特有的取出方式。
                -->Stack:继承Vector 先进后出的数据结构
       |--Set:元素无序,不重复。无特殊方法
     |--HashSet 底层 哈希表 散列存放 无序 不重复 根据哈希码存储和读取数据  存取删效率高 改效率慢 存取对象的类一般要重写hasdcode和equals方法
     *重点:如果是修改元素,要先删除,然后添加,直接修改的话,由于hashcode建立后不能改变,所以引用转向别的hashcode地址,原有元素依然存在
     *而此时,由于jvm发现原有元素引用没有消除,所以不会被回收,这种操作很容易造成内存溢出
              |--TreeSet 底层 二叉树 自动排序 不重复,可传比较器
              |--LinkedHashSet 它继承与HashSet、又基于LinkedHashMap来实现的 存入取出顺序一致,元素不重复
----------------------------------List集合通用方法---------------------------------------------------------
*增 add() add(3,E)在角标3位置插入数据 addAll() 添加子集合
*删 clear() remove(1)删除下表为1元素remove(E)移除集合中第一次出现的E元素removeAll()
*改 set(1,abc)将角标为1的元素替换成abc subList(1,5)将1-5元素当子集合返回 toArray()
*查get(1)得到角标为1的元素 indexOf(E)/lastIndexOf()E在集合中第一次/最后出现出现的角标
*判 contains(E)判断某元素是否在集合中equals() isEmpty()
**迭代器 Iterator it = al.iterator();it.hasNext())it.next()
**ListIterator  hasPrevious() Previous()逆向遍历 remove set 跟最后next有关        
LinkedList:特有方法:
addFirst(); offerFirst(添加) ;pollFirst(获取移除);peekFirst(获取不移除)
addLast(); offerLast(E e) pollLast();peekLast();
getFirst();
getLast();
pop() push()
element() 获取但不移除
removeFirst();
removeLast();
--------------------set集合-----------------------------------------
Set:无序,不可以重复元素。
       |--HashSet:数据结构是哈希表。线程是非同步的。
                            保证元素唯一性的原理:判断元素的hashCode值是否相同。
                            如果相同,还会继续判断元素的equals方法,是否为true。
       |--TreeSet:可以对Set集合中的元素进行排序。底层数据结构是二叉树。
                            保证元素唯一性的依据:
                            compareTo方法return 0.
                            TreeSet排序的第一种方式:让元素自身具备比较性。
                            元素类需要实现Comparable接口,覆盖compareTo方法。
                            这种方式也成为元素的自然顺序,或者叫做默认顺序。
                            TreeSet的第二种排序方式。新建比较器类(也可以本类继承),继承Comparator接口,复写compare方法
                            当元素自身不具备比较性时,或者具备的比较性不是所需要的。
                            这时就需要让集合自身具备比较性。
                            在集合初始化时,就有了比较方式。
------比较-------------------------------------------------------------------
*Vector和ArrayList
  vector线程同步 安全,而arraylist线程异步不安全。arraylist效率比较高。
  对于大集合,vector增长率为目前数组长度的100%,而arraylist增长率为目前数组长度的50%+1.数据量比较大时,用vector有一定的优势。
*arraylist和linkedlist
 ArrayList数组结构,LinkedList链表结构。
 ArrayList查询快,LinkedList增删快
 若只对单条数据增删操作,ArrayList的速度反而优于LinkedList。
*HashMap与TreeMap
 HashMap元素固定,无序,TreeMap元素不固定,有序
         插入、删除和定位元素用HashMap
   遍历集合用TreeMap
----------------------**Map集合特点-----------------------------------------------------------------
    |--Hashtable:底层 哈希表数据结构,不允许null。线程同步效率低。
       |--HashMap: 底层 哈希表数据结构,允许  null。不同步效率高。
       |--TreeMap: 底层 二叉树数据结构。线程不同步。键自动排序。
**Map集合通用方法:
 增:put(K key, V value) putAll(Map<? extends K,? extends V> m)
 删:clear() remove(Object key)
 查:get(Object key)
 判:containsKey(Object key) containsValue(Object value) isEmpty()
 特:entrySet(kv集合) keySet(k的set集合) values(v的collection集合)
TreeMap特有:
  ceilingEntry(K key) 返回本key Entry对象 firstEntry() lastEntry()  firstKey() lastKey()
  floorEntry(K key返回小于等于给定键的最大键) floorKey(K key)
map集合的两种取出方式:
 *TreeMap中 复写cmopare里面返回0 put(new Person("小李",30),"年轻")  put(new Person("小李",50),"老了") 输出值为小李30,老了,因为先比较了键相同,则键不懂,值覆盖
 *遍历map集合Iterator<String> it=ma.keySet().iterator();
  while(it.hasNext()){
   String a=it.next();
   System.out.println(a+":"+ma.get(a));
  }
1,Set<k> keySet:将map中的键存入Set集合,用迭代器得到key,通过get方法获取值。
2,Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到了set集合中,
                            而这个关系的数据类型就是:Map.Entry
                            Entry其实就是Map中的一个static内部接口。
集合工具类:
 reverse(List<?> list) sort(List<T> list) sort(List<T> list, Comparator<? super T> c)
 binarySearch(List<? extends Comparable<? super T>> list, T key) swap(List<?> list, int i, int j)
---------------------------------------------------------------------------------------------
System:类中的方法和属性都是静态的。
currentTimeMillis() 获取当前系统时间
exit(int status) 0 为正常退出 gc() 运行垃圾回收器
out:标准输出,默认是控制台。
in:标准输入,默认是键盘。
获取系统属性信息: getProperties();
 *TreeMap中 复写cmopare里面返回0 put(new Person("小李",30),"年轻")  put(new Person("小李",50),"老了") 输出值为小李30,老了,因为先比较了键相同,则键不懂,值覆盖
 *遍历map集合Iterator<String> it=ma.keySet().iterator();
  while(it.hasNext()){
   String a=it.next();
   System.out.println(a+":"+ma.get(a));
  }
*charAt可以遍历字符串集合
*if(map.containsKey(c)){
 count=map.get;
 count++;
}else{
 count=1;
}
*Map.Entry:键值对类,getValue() getKey() 
posted @ 2015-12-03 22:12  陈旭缘  阅读(100)  评论(0编辑  收藏  举报
这是什么