zoukankan      html  css  js  c++  java
  • Java--集合框架

    1、集合框架的概述

    集合和数组的区别:

    》数组的 长度固定,集合长度可变

    》数组只能通过下标访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象

    Collection

    Collection是集合接口 

       |————Set子接口:无序,不允许重复。    |————List子接口:有序,可以有重复元素。

        区别:Collections是集合类

        Set和List对比:
        Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。
        List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。

        Set和List具体子类:
        Set
         |————HashSet:以哈希表的形式存放元素,插入删除速度很快。

        List
         |————ArrayList:动态数组
         |————LinkedList:链表、队列、堆栈。

        Array和java.util.Vector
        Vector是一种老的动态数组,是线程同步的,效率很低,一般不赞成使用。

     (1) 单元素添加、删除操作: 
     
    boolean add(Object o):将对象添加给集合 
     
    boolean remove(Object o): 如果集合中有与o相匹配的对象,则删除对象o 
     
    (2) 查询操作: 
     
    int size() :返回当前集合中元素的数量 
     
    boolean isEmpty() :判断集合中是否有任何元素 
     
    boolean contains(Object o) :查找集合中是否含有对象o 
     
    Iterator iterator() :返回一个迭代器,用来访问集合中的各个元素 
     
    (3) 组操作 :作用于元素组或整个集合 
     
    boolean containsAll(Collection c): 查找集合中是否含有集合c 中所有元素 
     
    boolean addAll(Collection c) : 将集合c 中所有元素添加给该集合 

    private List coursesToSelect;
    Course[] course = {new Course("3", "Java编程"),new Course("4", "C++")};
    coursesToSelect.addAll(Arrays.asList(course));

    void clear(): 删除集合中所有元素 
     
    void removeAll(Collection c) : 从集合中删除集合c 中的所有元素 
     
    void retainAll(Collection c) : 从集合中删除集合c 中不包含的元素 
     
    (4) Collection转换为Object数组 : 
     
    Object[] toArray() :返回一个内含集合所有元素的array 
     
    Object[] toArray(Object[] a) :返回一个内含集合所有元素的array。运行期返回的array
    和参数a的型别相同,需要转换为正确型别。 

    Collection不提供get()方法。如果要遍历Collectin中的元素,就必须用Iterator.

    List接口:

    面向位置的操作包括插入某个元素或 Collection 的功能,还包括获取、除去或更改元素
    的功能。在 List 中搜索元素可以从列表的头部或尾部开始,如果找到元素,还将报告元素所
    在的位置 : 
     
    void add(int index, Object element): 在指定位置index上添加元素element 
     
    boolean addAll(int index, Collection c): 将集合c的所有元素添加到指定位置index 
     
    Object get(int index): 返回List中指定位置的元素 
     
    int indexOf(Object o): 返回第一个出现元素o的位置,否则返回-1 
     
    int lastIndexOf(Object o) :返回最后一个出现元素o的位置,否则返回-1 
     
    Object remove(int index) :删除指定位置上的元素 
     
    Object set(int index, Object element) :用元素element取代位置index上的元素,并且
    返回旧的元素 

    LinkedList类和ArrayList类:

    LinkedList类添加了一些处理列表两端元素的方法。 

    (1) void addFirst(Object o): 将对象o添加到列表的开头 
     
    void addLast(Object o):将对象o添加到列表的结尾 
     
    (2) Object getFirst(): 返回列表开头的元素 
     
    Object getLast(): 返回列表结尾的元素 
     
    (3) Object removeFirst(): 删除并且返回列表开头的元素 
     
    Object removeLast():删除并且返回列表结尾的元素 
     
    (4) LinkedList(): 构建一个空的链接列表 
     
    LinkedList(Collection c): 构建一个链接列表,并且添加集合c的所有元素 
     
    “使用这些新方法,您就可以轻松的把 LinkedList 当作一个堆栈、队列或其它面向端点的数
    据结构。” 

    Set接口:

    Set 接口继承 Collection 接口,而且它不允许集合中存在重复项,每个具体的 Set 实现类
    依赖添加的对象的 equals()方法来检查独一性。Set接口没有引入新方法,所以Set就是一
    个Collection,只不过其行为不同。

    Comparable接口和Comparator接口:

    在“集合框架”中有两种比较接口:Comparable接口和Comparator接口。像String和Integer
    等Java内建类实现 Comparable接口以提供一定排序方式,但这样只能实现该接口一次。对
    于那些没有实现Comparable接口的类、或者自定义的类,您可以通过 Comparator接口来定
    义您自己的比较方式。

    Comparable接口 :

    (1) int compareTo(Object o): 比较当前实例对象与对象o,如果位于对象o之前,返回负
    值,如果两个对象在排序中位置相同,则返回0,如果位于对象o后面,则返回正值

     Comparator接口:

    (1)int compare(Object o1, Object o2): 对两个对象o1和o2进行比较,如果o1位于o2
    的前面,则返回负值,如果在排序顺序中认为o1和o2是相同的,返回0,如果o1位于o2的
    后面,则返回正值 

  • 相关阅读:
    后缀表达式
    Linux中的硬链接和软链接
    C++中const总结
    atexit()函数
    Linux中的0号进程和1号进程
    什么是可重入函数和不可重入函数
    在线(Online)算法
    PHP验证IP地址输入的准确性:数组数值验证
    PHP网页计时工具——SESSION问题
    软件版本号命名规则
  • 原文地址:https://www.cnblogs.com/Nyan-Workflow-FC/p/6389278.html
Copyright © 2011-2022 走看看