第十一章 集合

来源:互联网 发布:天涯明月刀数据异常 编辑:程序博客网 时间:2024/06/04 18:52
集合的长度是可变的。
  Collection:层次结构的集合接口,用于描述一组对象。
  Map:键值结构的集合接口,可以通过键获取值。
                    Collection                                                   Map
                            |                                                                |
                  list           set    (子接口)                          HashMap(实现类)
                    |               |
              ArrayList    HashSet  (实现类)
     Iterable 迭代器 ,所有的超级接口,有一个iterator()的方法
    
List集合的特点:
            1、线性存储数据(队列结构,先进先出)
            2、允许写进重复的数据
 ArrayList :是一个动态数组,其底层是通过数组来实现的。

打印显示集合的所有元素(三种方法)
            方法一:普通的循环遍历
  1. ArrayList list = new ArrayList();
  2. for(int i =0 ; i < list.size(); i++){
  3. system.out.println(list.get(i));
  4. }
            方法二:迭代器迭代
  1. //获取集合的迭代器
  2. Iterator iterator = list.iterator();
  3. //使用迭代器进行数据的迭代
  4. while(iterator.hasNext()){
  5. //获取当前迭代的数据
  6. Object value = iterator.next();
  7. system.out.println(value);
  8. }
            方法三:快速迭代的方式
结构:for(元素的类型    变量名:被遍历的集合){
                   //通过变量名表示遍历到的数据值
            }
  1. for(Object value:list){
  2. system.out.println(value);
  3. }
在快速遍历的迭代过程中,不允许对被遍历的集合进行增删改等操作。


性能方面:
        ArrayList在查询的时候性能较好,但对集合的数据进行增加、删除、修改等操作时性能较差。
        LinkedList采用的是链式结构,所以它对增、删、改等操作性能较好,但对查询性能就会很差。
        ArrayList集合会把后面的元素(因为ArrayList在增加操作时,如果超过初始的长度,它会新建一个长度为原来1.5倍+1的数组,代替原来的数组;删除时,如果前面的元素值被删除,值往前面移动)
        (LinkedList采用链式结构,所以在执行增删改操作时,只需要对元素值得指针进行改变,而指针的改变对内存的消耗是很少的,在查询上,LinkedList集合在存储元素时,是随机存储的,然后通过指针连接)

Vector 集合 和ArrayList 都属于动态数组,区别在于Vector 是线程安全集合,而ArrayList是非线程安全集合。

set集合
        特点:
            1、无序存储
            2、不能存储重复的元素
set集合无法获取单个指定的元素,所以只能通过遍历或者迭代的方式来获取。
set集合存储的元素根据哈希值排列的额,并且不能存储重复的数据。


泛型
    通过泛型来约束集合中存储的元素类型
    使用泛型后不需要进行拆箱


 
Map
    以键值对的方式存储数据。
    键不能重复
    值允许重复
    通过键获取值

同上的Vector 和ArrayList,HashMap是非线程安全的集合,而HashTable是线程安全的集合。

Entry表示一个键值对,Map中的每个元素都是Entry类型。
  1. //记住HashMap的三个重要方法
  2. entrySet()//获取集合中的所有键值对
  3. keySet()//获取集合中的所有键
  4. values()//获取集合中的所有值

三种方式遍历HashMap集合
  1. HashMap<Integer,String> map = new HashMap<Integer,String>();
  2. map.put(1001,"A");
  3. map.put(1002,"B");
  4. map.put(1003,"C");
  5. //方法一根据键来遍历集合
  6. for(Integer key:map.keySet()){
  7. system.out.println(map.get(key));
  8. }
  1. //方法二:根据值来遍历
  2. for(String value:map.values()){
  3. system.out.println(value);
  4. }
  5. //方法三:根据键值对Entry来遍历
  6. for(Entry<Integer,String> entry:map.entrySet()){
  7. system.out.println(entry.getKey()+"\t"+entry.getValue());
  8. }


 
collections 类是Java集合框架的工具类,封装了集合相关的处理方法
Arrays类也是集合的工具类,仅针对 List 结合的使用
  1. //直接获取List集合
  2. //空集合,emptyList()方法
  3. List list = Collections.emptyList();
  4. //指定值的集合 ...表示参数允许出现任意多次,asList()方法
  5. List list = Arrays.asList("a","b","c","d");
  6. System.out.println(list.size());
0 0
原创粉丝点击