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

    集合框架三大内容:对外的接口、接口的实现和对集合运算的算法

     

    集合有三大类接口:List、Set、Map

    共同点:都是集合接口,都可以用来存储很多对象

    不同:Collection接口存储一组不唯一(允许重复)、无序的对象

    • Set接口继承自Collection接口,存储一组唯一(不允许重复)、无序的对象
    • List接口继承自Collection接口,存储一组不唯一(允许重复)、有序(以元素插入的次序来放置元素,不会重新排列)的对象。

    Map接口存储一组成对的键-值对象,提供key(键)到value(值)的映射。Map中的key不要求有序,不允许重复,value同样不要求有序,但允许重复。

    • Iterator接口是负责定义访问和遍历元素的接口。

    List接口的常用类有ArrayList和LinkedList。可以容纳所有类型的对象,包括null,允许重复,并保证元素的存储顺序。

    ArrayList:在内存中分配连续的空间,优点在于遍历元素和随机访问元素的效率比较高。

    Vector和ArrayList的不同

    实现原理、功能相同

    区别:Vector线程安全,ArrayList重速度轻安全,非安全

    长度增长时Vector默认增长一倍,ArrayList增长一半

     

    Hashtable和HashMap异同

    相同:实现原理、功能相同

    不同:Hashtable继承Dictionary类,HashMap实现Map接口

    Hashtable安全,HashMap线程非安全

    Hashtable不允许null值,HashMap允许null值5

    ArrayList接口中定义的常用常用方法

    方法名称

    说明

    boolean add(对象名)

    在末尾顺序添加元素,从索引位置0开始

    void add(下标位置,对象名)

    在指定的索引位置添加元素,原索引位置及其后面的元素依此后移

    集合名.size()

    返回列表中元素的个数

    Object get(下标)

    返回指定索引位置处的元素

    boolean contains(对象名)

    判断列表中是否存在指定元素

    集合名 remove(对象名)

    从列表中删除元素

    集合名 remove(下标)

    从列表中删除指定位置元素,起始索引位置从0开始

    LinkedList:采用链式存储方式,优点在于插入、删除元素时效率比较高,检索时速度慢。提供了addFirst()、addLast()、removeFirst()、removeLast()等方法,可以在首位进行插入或删除操作。使得LinkedList可被作为堆栈(stack)或队列(queue)。

    LinkedList特殊方法

    方法名称

    说明

    void addFirst(对象名)

    在列表的首部添加元素

    void addLast(对象名)

    在列表末尾添加元素

    Object getFirst()

    返回列表中的第一个元素

    Object getLast()

    返回列表中的最后一个元素

    Object removeFirst()

    删除并返回列表中的第一个元素

    Object removeLast()

    删除并返回列表中的最后一个元素

    Map接口存储一组成对的键-值对象,提供key(键)到value(值)的映射。

    Map中的key不要求有序,不允许重复。

    value不要求有序,允许重复。

    常用Map实现类是HashMap,存储方式是哈希表,也称为散列表,根据(key value)直接进行访问。

    存放记录的数组称为散列表。

    Map的常用方法

    方法名称

    说明

    Object put(Object key,Object value)

    以”键-值对”的方式存储

    注意:键必须是唯一的,值可以重复,如果添加重复的键,那会替换原来的键

    Object get(Object key)

    根据键返回相关联的值,若不存在指定的键,则返回null

    Object remove(Object key)

    删除指定的键映射的”键-值对”

    int size()

    返回元素个数

    Set keySet()

    返回键的集合

    Collection values()

    返回值的集合

    boolean containsKey(Object key)

    若存在指定的键映射的”键-值对”,则返回true

    boolean isEmpty()

    若不存在键-值对映射关系,则返回true

    void clear()

    从此映射中移除所有的映射关系

    遍历map几种方式

    public static void main(String[] args) {

     

      Map<String, String> map = new HashMap<String, String>();

      map.put("1", "value1");

      map.put("2", "value2");

      map.put("3", "value3");

       

      //第一种:普遍使用,二次取值

      System.out.println("通过Map.keySet遍历key和value:");

      for (String key : map.keySet()) {

       System.out.println("key= "+ key + " and value= " + map.get(key));

      }

       

      //第二种

      System.out.println("通过Map.entrySet使用iterator遍历key和value:");

      Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();

      while (it.hasNext()) {

       Map.Entry<String, String> entry = it.next();

       System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());

      }

       

      //第三种:推荐,尤其是容量大时

      System.out.println("通过Map.entrySet遍历key和value");

      for (Map.Entry<String, String> entry : map.entrySet()) {

       System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());

      }

      //第四种

      System.out.println("通过Map.values()遍历所有的value,但不能遍历key");

      for (String v : map.values()) {

       System.out.println("value= " + v);

      }

     }

    迭代器Iterator

    Iterator为集合而生,专门实现集合的遍历。隐藏各种集合实现类的内部细节。提供遍历结合的统一接口。

    Collection接口的iterator()方法返回一个Iterator,然后通过Iterator接口的两个方法遍历

    boolean hasNext():判断是否存在另一个可访问的元素

             Object next():返回要访问的下一个元素

    泛型集合

    在创建对象时指定集合中元素的类型,从集合中取出元素时无须进行类型强制转换,并且如果把非指定类型对象放入集合,会出现编译错误。

    List<E> 对象名=new ArrayList<E>();

    如List<Dog> dogs = new ArrayList<Dog>();

    Map<String,Dog> dogMap=new HashMap<String,Dog>();

    Map<K,V> 对象名Map=new HashMap<K,V>();

    包装常用构造方法

    public Type(type value)

    Type代表包装类,type代表基本类型。

    一旦创建了某个包装对象,该对象所代表的值就不能改变了。

    常用的类型转换

    包装类->基本类型

    public type typeValue()

    字符串->基本类型

    public static type parseType(String type)

  • 相关阅读:
    4259. 残缺的字符串
    BZOJ3451. Tyvj1953 Normal
    BZOJ3509. [CodeChef] COUNTARI
    BZOJ3527: [Zjoi2014]力
    BZOJ2194. 快速傅立叶之二
    Educational Codeforces Round 69 (Rated for Div. 2) A~D Sloution
    hibernate对单表的增删改查
    spring中的AOP
    spring笔记二
    struts2的验证
  • 原文地址:https://www.cnblogs.com/ACCPGuo/p/9354304.html
Copyright © 2011-2022 走看看