集合框架

集合的概念:一种工具类,像是容器,储存任意数量具有相同属性的对象

 

hash码时无序的,但查找是最快的。Array内存地址连续(数据查找更快)   Linked内存地址不连续(数据更新更快)

1、List接口

    List是有序并且可以重复的集合称为序列
    取得List元素的方法
    ①List长度 size()遍历,get(序号);
    ②通过迭代器来遍历List    //所有实现了Collection接口的类都有一个iterator()方法
      iterator 例:ArrayList a;
      Iterator it = a.iterator;
      while(it.next()){
        Course cr = (Course) it.next();
      }
    Arrays.asList();将数组转为List

  •  增:add(int index,E element)//将指定的元素插入此列表中的指定位置。

    addAll(int index, Collection<? extends E> c) // 从指定的位置开始,将指定 collection 中的所有元素插入到此列表中。

  •  删:remove(int index) // 移除此列表中指定位置上的元素。

    remove(Object o) //移除此列表中首次出现的指定元素(如果存在)
    removeAll(Collection<?> c) //移除此 collection 中那些也包含在指定 collection 中的所有元素

  •  改:set(int index,E element)
  •    查:get(序号);

    判断一个元素出现的位置indexOf(Objext o)。
    在删除int数据类型的时候,若不是利用索引来删除的话,则需 remove(new integer(int x))

2、Set接口

  Set是无序且不可以重复的集合,被称为集

    Set set = new HashSet();

  •  增:set.add();
  •  删:set.remove();
  •  改:Set 无set()方法// 因为List有序,Set无序
  •  查:循环遍历Set中的元素只能用Iterator或ForReach,不能用get()

   set.isEmpty();//判断是否为空 也可使用set.size()方法
   长度size()
   Set中添加对象,无论添加多少次,只保留第一次添加的对象

3、Map接口 

  Map出现的原因:Hashset没有索引,不方便通过索引来对容器进行操作
  Map其实就是在set的基础上加了索引,并且这个索引可以自己定义
  Map是以key-value(键-值对)的方式保存的,值可以重复,但索引不能重复,每个键最多映射一个值
  Entry代表一对key-value,它是Map的属性(成员变量)
  Map的泛型,形式如:Map< k , v >
  HashMap类
  HashMap类中的Entry类是无序排列的。
  key值和value值都可以为null,但一个HashMap只能有一个Key值为null的映射

  •    增:put(K key, V value) //在此映射中关联指定值与指定键。
  •  删:remove(Object key) //从此映射中移除指定键的映射关系
  •  改:put(K key, V value)
  •  查:entrySet() //返回此映射所包含的映射关系的 Set 视图。

  keySet() //返回此映射中所包含的键的 Set 视图。
  values() //返回此映射所包含的值的 Collection 视图。
  values() // 返回此映射所包含的值的 Collection 视图,没有则返回null。
  例:
    Map<String,String> map = new HashMap<String,String>();
    map.set(“1”,”one”);
    map.set(“2”,”two”);
    map.set(“3”,”three”);
    map.set(“4”,”four”);
    Set<Map.Entry<String,String>>entrys = map.entryset();
    for(Iterator<Map.Entry<String,String>> i = entrys.iterator();i.hasNext();){
    Map.Entry<String,String> entry = i.next();
    System.out.println(entry.getvalue());

4、泛型

  指定当前的容器中只能放置哪种类型,泛型集合可以添加泛型的子类型的对象实例
  泛型中的限定类型不能使用基本数据类型,可以使用包装类限定允许存入的基本数据类型
  List<Person> list = new ArrayList<Person>();

5、包含

  Collection中的contains  

  List/Set中包含某元素:

    contains(Object o) // 如果 包含指定的元素,则返回 true。
        containsAll(Collection<?> c) // 如果包含指定 collection 的所有元素,则返回 true。

  List中课程的位置:

    indexOf(Object o) // 返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回 -1。
    lastIndexOf(Object o) // 返回此列表中最后出现的指定元素的索引;如果列表不包含此元素,则返回 -1。

  Map中:

    containsKey(Object key) // 如果此映射包含指定键的映射关系,则返回 true。
    containsValue(Object value) //如果此映射将一个或多个键映射到指定值,则返回 true。 

6、Collections工具类

  java.util.Arrays  操作数组的各种静态方法

  java.util.Collection 操作集合对象的工具类

  Collections.sort(List<T> list) // 必须实现Compareble接口,根据元素的自然顺序 对指定列表按升序进行排序。如果是String类型的话,先看首字母然后依次看第二个,第三个。。。排列顺序:数字0~9,大写字母A~Z,小写字母a~z;

  Comparable接口//定义默认的排序规则  其实现类要实现compareTo()方法,返回正数则表示大,负数则表示小,0表示相等

  Comparator接口//定义临时的比较规则  其实现类要实现compare()方法

一个无从安放的函数

  Random random() = new Random();
  random.nextInt(100);//随机生成一个100以内的整数

posted @ 2017-08-18 20:09  Lune-Qiu  阅读(124)  评论(0编辑  收藏  举报