集合框架1

这里写图片描述
为什么要使用集合?
储存数据的容器有:变量,数组,数据库
内存:变量(单一的空间)数组(多个连续的空间,有下表,访问数据比较快,但是数组长度固定,只能储存同一类型,增删非常麻烦)
外部:数据库(大量,易于管理)

集合:
* 什么是集合?
* 集合是java中一个存储数据的容器
* 在java中集合这种容器有很多种,将这些容器所具备的共性的内容不断的向上抽取,就形成了一个集合体系
* 集合体系的顶层就是Collection
* 详细就看图

  • 怎么去创建集合?
  • 1.Collection interface
  • 不能直接创建Collection的实例
  • 特点 : 一些 集合 允许有重复的元素,而另一些则不允许。
  • 一些 集合 是有序的,而另一些则是无序的。
    实现集合也就是其子类 Map list set 三大类

List 有序 重复元素的集合 list接口下的集合都有索引
//向指定下表添加元素

 * 添加
 * add(int index, E element) 向指定的下标添加元素
 * addAll(int index, Collection<? extends E> c) 向指定的下标添加另一个集合  
 * 
 * 获取
 * get(int index)  获取指定下标的元素
 * 和String类似
 * indexOf(Object o)
 * lastIndexOf(Object o)
 * subList(int fromIndex, int toIndex)  
 * 
 * 迭代器   
   1.同样不能通过增强for来修改集合
        for (Object object : list) {
        //注意 : 在迭代集合的同时,不能通过集合来修改本身的内容
        if("fff".equals(object)){
            list.add("ggg");//同样会抛出异常
        }
    }  

    2.  ListIterator li= list.listiterator();
         while(li.hasNext())
         if(li.next.equals("fff")){
         li.add("ggg");  //通过拿到listiterator 通过迭代器本身来对集合进行修改,就不会产生异常
         }
         }


 * 删除
 * remove(int index) 删除指定下标的元素
 * 修改
 * set(int index, E element) 修改指定下标的元素 
 * 
 list 可以分为ArrayList , LinkedList   
ArrayList 数组结构 不同步,线程不安全的集合,效率比较高  储存的数据不唯一,但是有序(插入顺序)便于查找 
为什么ArrayList是使用的较多的集合? 查询的操作比增删要多  

LinkedList 链表结构的集合   

     * 对集合开头结尾的操作的方法
     * addFirst(Object o);  插入开头的方法
     * addLast(Object o);  插入结尾的方法     
     * 
       System.out.println(list.removeLast());    //删除并返回最后一个元素的内容
       System.out.println(list.removeFirst());    //删除并返回第一个元素的内容  

        //也就类似于查找集合中的元素
        System.out.println(list.getFirst());      //直接返回第一个元素
        System.out.println(list.getLast());      //直接返回最后一个元素


    //创建集合容器
      Collection c = new ArrayList();   
      Collection c1 = new ArrayList(); 

    添加:  
      add(Object e)
      addAll(Collection c) 
        c.add("c1中的内容1");
        c.add("c1中的内容2");
        c.add("c1中的内容3");
    //创建addAll()
        c.addAll(c1);

     判断: 
     //contains(Object o)  包含
     System.out.println(c.contains("asd")); 
     System.out.println(c.contains(new Student("张三",12)));
     //containsAll(Collection<?> c) 
     System.out.println(c.containsAll(c1));  
     //判断集合里面是否为空
     isEmpty() 



     删除
     remove(Object o) 删除指定元素 
     System.out.println("remove : " + c.remove("asd")); //代表删除成功 返回true
     removeAll(Collection<?> c)删除阐述集合c中的全部内容
     System.out.println("removeAll : " + c.removeAll(c1));
     System.out.println(c);
     retainAll(Collection<?> c) 保留参数集合c中的全部内容
     System.out.println("retainAll : " + c.retainAll(c1));
     System.out.println(c); 
     clear()清空集合中的所有内容
     c.clear();
     System.out.println(c);

     *  其他:  
     * 
     *  iterator() ***** 迭代器 用于获取集合中的元素 
     *   获取迭代器
         Iterator it = c.iterator();  
         //遍历元素 取出元素的时候,如果存储的时候数据类型不一致,就很有可能出现 ClassCastException 类型转换异常 ,泛型的技术来解决这个问题  
         //System.out.println(it.hasNext());//判断有没有下一个元素 
         //System.out.println(it.next());;//返回下一个元素  抛出一个异常  NoSuchElementException 没有元素
         while(it.hasNext()){ 
         System.out.println(it.next());
         }



     *  size()  
        获取集合中元素的个数
        System.out.println(c.size());  



         toArray()  
         toArray() 将集合转换成Object类型数据
         Object[] arr = c.toArray(); 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值