java集合框架

一、Collection接口

注:包含int size();isEmpty();boolean contains(Object o);boolean add((Object o);boolean remove((Object o);Iterator iteartor();等基本方法

list接口

特点:(继承自Collection接口,也就拥有Collection接口的方法)

1.list中的元素是有序的

2.允许重复

3.支持null元素

4.可通过索引访问对象容器中的元素

1.Arraylist

概念上与数组相似,表示一组编入索引的元素,但Arraylist没有预先确定大小,长度可按需增大。

泛型:在定义类、接口时指定类型的形式参数;可以是任何类型的对象。为通用性着想,将集合设计成能保存任何类型的对象。

存在的问题:

1.集合对元素类型没有任何限制

2.把对象放入集合后,集合丢失了对象的状态信息,集合只知道它装的是Object,取出来之后还要强制类型转换。

方法归纳

1.void add(int index,Object o):在列表的指定位置插入对象

    List<String> list = new ArrayList<String>();
    list.add("11");
    list.add("22");
    list.add(0, "qq");//在指定位置增加元素
    输出:[qq, 11, 22]

2.object remove(int index):删除列表指定位置的对象

    List<String> list = new ArrayList<String>();
    list.add("11");
    list.add("22");
    list.remove(1);//删除指定元素
    输出:[11]

3.object get(int index):返回列表中指定位置的对象

    List<String> list = new ArrayList<String>();
    list.add("11");
    list.add("22");
    System.out.println(list.get(0));
    输出:11

4.object set(int index,object 0):用指定对象替换列表中指定位置的对象

    List<String> list = new ArrayList<String>();
    list.add("11");
    list.add("22");
    list.set(0, "qq");
    输出:[qq, 22]

5.object contains(object 0):判断列表中是否含有该对象,是返回true,否返回false

    List<String> list = new ArrayList<String>();
    list.add("11");
    list.add("22");
    System.out.println(list.contains("11"));
    输出:true

迭代器(遍历列表内容)

Iterator:遍历其中的内容

    Map<String,String> map=new HashMap<>();
    map.put("a", "成都");
    map.put("b", "上海");
    map.put("c", "香港");
    /*
     * 采用Iterator迭代器遍历
     */
    Set<String>keys=map.keySet();
    for (Iterator<String>i=keys.iterator();i.hasNext(); ) {
        String key=i.next();
        String value=map.get(key);
        System.out.println(key+"="+value);
    }
输出:
b=上海
c=香港
a=成都

2.LinkedList(双向链表,不支持快速随机访问,效率比较低下)

注:实现双向链表的功能,将列表中的每个对象放在独立的空间里,每个空间中还保存有上一个和下一个连接的索引

基本方法包括:void addFirst(Object o); void addLast(Object o); void getFirst(); void getLast();void removeFirst();void removeLast();

1.void add(Object o):向列表中添加对象

        LinkedList<String> list=new LinkedList();
        list.add("000");
        list.add("111");
        list.add("222");
        list.add("aaa");
        输出:[000, 111, 222, aaa]

2.void addFirst(Object o):在链表开头添加一个对象

        LinkedList<String> list=new LinkedList();
        list.add("000");
        list.add("111");
        list.addFirst("ddd");
        输出:[ddd, 000, 111]

3.void getFirst():返回链表中的第一个元素

        LinkedList<String> list=new LinkedList();
        list.add("000");
        list.add("111");
        System.out.println(list.getFirst());
        输出:000

4.Object removeFirst():删除链表中第一个元素

        LinkedList<String> list=new LinkedList();
        list.add("000");
        list.add("111");
        list.removeFirst();
        输出:111

二.Set接口(继承自Collection接口)

1.Set类型容器不能包含重复元素

2.元素可能有顺序,也可能没顺序

3.不能基于索引访问Set里的元素

1.HashSet(基于哈希算法的Set接口实现)

1.遍历HashSet时,其中的元素是没有顺序的

2.不允许出现重复元素

3.允许包含null元素

方法列举(大致方法和list大同小异)

set.add():增加元素对象

    Set<String> set=new HashSet<>();
    set.add("11");
    set.add("22");
    System.out.println(set);
    输出:[22, 11]//可能有顺序,也可能没顺序

2.TreeSet(不仅实现类Set接口,还实现了SortedSet接口插入对象时,会按照一定的算法来排序)

方法(大致方法和list大同小异)

set.add():增加元素对象

    Set<String> set=new TreeSet<>();
    set.add("11");
    set.add("22");
    System.out.println(set);
    输出:[11, 22]

三、Map<key,value>接口

1.一种从键key到值value的对应关系的集合

2.<key,value>可是任何引用类型的数据,key不能重复,value可以重复

1.HashMap类

1.基于哈希算法的Map接口,HashMap并不保证键以特定顺序排列,特别是不保证顺序永久不变。

方法列举:

1.map.put(Object key,Object value):向该映射中添加键值对

    Map<String,String> map=new HashMap<>();
    map.put("a", "成都");
    map.put("b", "上海");
    map.put("c", "香港");     
    System.out.println(map);
    输出:{b=上海, c=香港, a=成都}

2.remove(Object key):删除指定键的键值对

    Map<String,String> map=new HashMap<>();
    map.put("a", "成都");
    map.put("b", "上海");
    map.put("c", "香港");
    map.remove("a");
    System.out.println(map);
    输出:{b=上海, c=香港}

3.get(Object key):返回指定键相关的值

    Map<String,String> map=new HashMap<>();
    map.put("a", "成都");
    map.put("b", "上海");
    map.put("c", "香港");
    System.out.println(map.get("c"));
    输出:香港

4.containsValue(Object value):如果包含指定值,则返回true

    Map<String,String> map=new HashMap<>();
    map.put("a", "成都");
    map.put("b", "上海");
    map.put("c", "香港");
    System.out.println(map.containsValue("成都"));
    输出:true

5.containskey(Object key):如果包含指定值,则返回true

    Map<String,String> map=new HashMap<>();
    map.put("a", "成都");
    map.put("b", "上海");
    map.put("c", "香港");
    System.out.println(map.containskey("成都"));
    输出:true

6.size():返回包含键值对的数量

    Map<String,String> map=new HashMap<>();
    map.put("a", "成都");
    map.put("b", "上海");
    map.put("c", "香港");
    System.out.println(map.size());
    输出:3

2.TreeMap类(基于红黑树的Map接口实现,将键存放在树种,键的顺序严格按照自然顺序或者自定义顺序两种方式排列)

方法和HashMap的方法大致一样,只是功能上稍有不同

put(Object key,Object value):向该映射中添加键值对

    Map<String,String> map=new TreeMap<>();
    map.put("c", "成都");
    map.put("b", "上海");
    map.put("a", "香港");
    System.out.println(map);
    输出:{a=香港, b=上海, c=成都}
    结果严格按照顺序
posted on 2016-11-24 21:31  涛哥1989  阅读(112)  评论(0)    收藏  举报