java_0816

Collection集合

回顾: 1.Math  2.System     System.in  输入流
    System.out 输出流    System.err  打印
     
     2. 时间对象 Date   两个构造 
   DateFormat    抽象类   

  SimpleDateFormat   ==>  把 时间字符串转换为Date 对象   parse()      
                          format()   把Date相应的格式转换为时间字符串

  Calendar==> 是三个方法  set()  get()  setTime() getTime()


   //  集合:

   对象数组:   语法: 类名[]   d 对象名 =  new 类名[5];
     
     数组的缺点: 只要创建出来就固定其长度了, 所有扩展性差, ==>使用集合来解决 

      
        数组与集合 的关系:    相同点:1.数组与集合都是用来存数据,  都可以通过索引来获取数据
                                       2.数组与集合都是采用数组的方法来进行存的

                                 不同点:1.数组可以存基本数据类型,也可以存引用数据类型
                                         集合只能够存引用数据类型 
                                       
                                         2.数组的长度是固定的,集合的长度是可变的
    集合的框架:   单列:  每一个存的数据的都是独立的 
                         Collection  跟接口 

                         /        \
                        /          \
                       List(有序,有索引,可以重复)        Set(无序,不可以是要美好普通的for循环)
                       /           \
                                    \
                      /                                     HashSet(以哈希来进行存)  TreeSet( 以二叉数) (周一)
                    ArrayList(插入慢,查询快)(重点)       
                LinedList(查询慢,插入快)
                  Vector  线程安全

 
                   双列:   以键值对存  key  values  (下次)




        集合:集合也是一个容器,用于存数据。

       Collection:1. Collection 层次结构 中的根接口   索引也是从0开始   
            常规的一些方法: boolean add(E e)   添加,返回值是bealoon   添加成功返回true 
                             boolean contains(Object o)  判断是否有此元素   如果存在返回true  否则false
                             boolean isEmpty()  判断集合里是否有元素 
                             boolean remove(Object o)   根据集合里的元素进行删除
                              int size()     获取到集合的长度
                              Object[] toArray() 把集合转换成数组
                              void clear()  清空数组里的所有的元素
                              iterator() 把集合转换成迭代器的方法

                      所有带All  的方法:  1. addAll(Collection<? extends E> c)  把小集合添加到大集合里, 例如:  co.addAll(c); 把集合 c的所有数据添加到co
    
                                           2.boolean containsAll(Collection<?> c)  如果此 collection 包含指定 collection 中的所有元素,则返回 true3. removeAll(Collection<?> c)   返回值:如果存在交集返回 是true , 返回的是没有较交集的数据 
                                           4. retainAll(Collection<?> c)    返回值 判断是否发生该变,如果发生该变返回true,不发生该变返回false    取出来的是交集的结果


    // 如何对集合来进行遍历:1. for   2 .增强for 循环 3.使用迭代器来进行遍历 
    Iterator :  是一个接口,不能够被实例化      
           常规的方法: hasNext()  判断是否有下一个元素, 如果有返回true
                 
                         获取到下一个元素
                       remove()  移除迭代器的某一个元素

 
 //  遍历   语法:   使用迭代器 1. while 循环 (迭代器.hasNext()){
                      next()  // 获取其元素
 
   }
         1.  把一个集合转换成迭代器
         2.  获取值的时候,不要通过next()方法来获取具体的值,一定要先获取对象,  通过对象来获取值

 

       迭代器的内存图:



     增强for 循环的底层也是使用迭代器来实现,也是通过指针.


   // 写一个新闻对象 id title content  dateTime
           // 添加两个数据到集合 ,使用两种方法进行遍历

      List:  导包 java.util   是一个接口 


     特点:1.  有顺序   2.  有索引    3.可以重复
          
           List集合常规独有的一些方法: 
          public  void add(int index, E element)   根据索引的位置来进行添加

           E get(int index)  根据索引来获取其值  

            E remove(int index)    根据索引来进行删除

           E set(int index, E element)  也是替换 (前提这个已经存在) 
          总结: 这个方法都是根据索引来进行操作的  

        迭代器遍历报错: java.util.ConcurrentModificationException  对象的并发修改

        ListIterator  这个迭代器是针对  list 集合而存在, 它的父类也是Iterator
         //尝试解决这个bug 

        
        ArrayList:  1.有顺序   2.  有索引    3.可以重复    5.线程不安全
      4.  以数组的方式来存数据 :特点 :查询快    增加 删除修改慢 (最常用的)    

             构造方法:跟StringBuffer 的有点类似.    

        ArrayList 常规的方法  add() 添加(默认也是向末尾添加数据)    获取 get(index)  根据索引来获取  ( 最常用的) 

      // 创建一个Actor类,  使用ArrayList 增加三条数据,进行遍历


      LinkedList: 1.是以链表式来进行存  特点: 增加  删除  修改    速度快,效率高    查询速度慢
      LinkedList  也是 list 的 实现类 (不常用 )

       两个构造 :  一般使用空的构造

         常规的方法: public void addFirst(E e)    插入数据到集合的头部
                      public void addLast(E e)      插入到末尾    注意点: 比评查插入的效率要高
 
                     public E getFirst()     拿到集合中 第一个元素   

                     public E getLast()   获取最后一个数据   
                     public E removeLast()  移除最后一个元素
                     public E removeLast()   移除第一个元素  


          Vector:  线程安全的,   已经被ArrayList替换,也是以数组的方式来进行存 (了解)
         
                    构造方法与 ArrayList   是一样的
    
                    独有的方法 : public void addElement(E obj) 向末尾来添加数据
                                   public E elementAt(int index)    根据索引来获取
                                   public boolean removeElement(Object obj)    删除集合里的对象
                                      Element 都是根据节点来进行操作 
       
                  

 
    
  
  
 

正则表达式链接
https://www.cnblogs.com/Jansens520/p/6915384.html

Set是一个不能包含重复元素的集合。这个接口对数学集合抽象进行建模,被用来代表集合,就如一副牌。
List是一个有序集合,可以包含重复元素。你可以通过它的索引来访问任何元素。List更像长度动态变换的数组。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值