集合框架

1:父接口Collection
   常用方法:
  add(Object e):增加元素
  remove(Object obj)
  addAll(Collection c):两个集合合并
  removeAll(Collection c):移除交集
  retainAll(Collection c):保留交集
  clear():清空集合
  isEmpty():判断是否是空
  size():返回集合元素的个数。
  toArray():将集合对象转换成数组
2:List子接口----线性表
  常用的实现类:
  ArrayList:
       是线性结构内部封装的是动态的数组。长度的增加和减少已经被封装。
       可以理解为自动的。 
              查找快,增删慢
              线程不安全,效率高
  LinkedList:
      是链表结构。一个元素里存了前一个元素的地址和后一个元素的地址。
                           连到一起很像一链条。
              增加删除快,查找慢            
  Vector: 线程安全,效率低。
    List接口提供的方法:
     add(int index,Object obj):插入元素
     get(int index):获取元素
     remove(int index)
     indexOf(Object obj):返回元素的下标,返回-1说明没有此元素
     lastIndexOf(Object obj):
     contains(Object obj):判断是否包含元素obj
3:增强for循环,作用是用来遍历集合或者是数组。
    是迭代的另外一种写法,不是新语言。
     编译器会将此循环编译成迭代写法。
   结构:
   for(元素类型  变量名:集合或数组的变量){
      
   } 
4:泛型机制。
  4.1:泛型机制的本质是参数化类型。在类,接口和方法的
              定义过程中,可以进行指定参数类型名。
        
         在集合框架中,所有的集合类型都使用泛型机制。 
         好处是在进行参数化类型后,就可以限制集合元素
         的类型,编译器会通过指定的泛型进行检查。
         减少代码在运行时的错误。
    public class ArrayList<E>{
    ………………
        public boolean add(E e);
        public E get(int index);
        ………………
    } 
    ArrayList使用泛型机制,E就是类型参数。
       在具体使用时,得给E赋值,赋的值是类型名。
   List<String>  list = new ArrayList<String>();


   泛型机制不能使用八大基本数据类型


 5:集合的存储:
      集合元素都是引用类型。集合对象内存的是元素的地址信息,
      不是元素本身。
 6:集合工具类:Collections(注意与Collection的区别)
       里面提供了常用的方法,其中就有sort(),用来给集合排序。
    既然能使用sort对集合进行排序,说明元素之间是可以比较大
    小的。 能使用sort进行排序的元素类型必须实现comparable
    接口,必须重写接口里的compareTo(Object obj)方法,
  这个方法就是用来进行元素之间的比较的 。
   this>obj,返回>0的数。
   this<obj,返回<0的数
   this=obj,返回0
   
   Comparable---compareTo(Object a)

   Comparator---compare(Object a,Object b)

7.常用方法
   subList(int fromIndex,int toIndex);
       作用:是获取集合的子集合。
8.Comparable与Comparator的作用与区别
     都是用来排序的:
   Comparable是元素类型必须实现的接口。必须重写
   compareTo(Object obj)方法。调用sort(p1)方法
   return this-obj  ---升序
   return obj-this ----降序
   
   
   Comparator是再原有排序规则上,临时改变排序规则时,
      使用的比较器接口。必须实现compare(Object o1,Object o2),
      临时改变规则时,调用集合的sort(p1,p2)方法
   return p1-p2 ----升序
   return p2-p1 ----降序
9.队列Queue:
      是一个接口,数据结构是只能一端进,一端出(FIFO).
   LinkedList就实现了此接口(为什么不用ArrayList
     实现此接口呢?因为队列这种数据结构经常发生增删操作,
   LinkedList在增删效率上特别快)。
      常用方法:
   offer(E e):表示进入队列
   poll():表示从队首出队列,返回的就是出来的元素
   peek():查看队首元素,返回的就是队首元素
10.双端队列Deque接口,是队列Queue的子接口。
      每一端都可进可出。
11.双端队列把一端封闭(不使用),只用另一端来进行增删元素。
     就是栈的数据结构了(FILO)
     使用push(E e):

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_42005432/article/details/79965475
个人分类: java基础
上一篇io流
下一篇哈希算法 和 map接口
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭