Java语言中的集合框架总结

1、集合框架java

  集合是ava语言中很是重要的API;数组

  用来存储多个数据;数据结构

  实现了不一样的数据结构。框架

  三大接口:ide

  Collection:全部集合类的根接口;List、set是经常使用的子接口,ArrayList、LinkedList、HashSet是其下经常使用的三个类。this

  Map:映射接口,存放键值对;HashMap是其下经常使用的类。spa

  Iterator:遍历集合的迭代接口。对象

  Java的集合框架是由不少接口、抽象类、具体类组成的,都位于java.util包中。排序

2、Collection接口继承

  一、概念

  Collection<E>接口

  Collection即集合,是全部集合类的根接口,同时Collection接口是一个泛型接口。

  方法:

    add(E):添加对象;

    Iterator<E> iterator():生成迭代器对象,进而可 以迭代集合中的元素;

    int size();获取集合中元素数量(size实际大小)。

  二、Collection的子接口

     List:有序的集合,元素有序存入;

     Set:无序无重复的集合,即存入的元素不重复;

     Queue:队列,jdk1.5版本新增接口,Queue实现了“先进先出”(FIFO)的存储结构,具备全部集合基本操做,Queue还提供了一些新的插入、提取、查询等方法。

3、Map接口

  一、Map接口应用

   Map中保存的是键值对Map<key,Value> ,Key值不容许重复,若是重复,则覆盖。

  经常使用方法:

     put(K key,V value)该方法能够将key和value存到Map对象;

     get(Object key)该方法能够根据key值返回对应的value

     size()返回Map对象中键值对的数量。

  二、Map接口的实现类

    HashMap较经常使用的Map集合类,key值的hashCode和equals保证元素惟一性

    TreeMap不只能够保证key不重复,还能够对value数据进行排序;

    HashTablejdk1.0中定义的类,实现同步。

4、List接口

  一、概念

   继承了Collection接口,而且扩展出属于本身的方法,List 集合中的元素都是与索引有关系的,所以List 集合扩展的方法都是与索引有关系的。

  例如: add(int index,E)……添加元素在所对应的 索引位置。

  二、List的实现类

    ArrayList:数组列表,数据采用数组方式存储(实际用的最多的集合);

    LinkedList:链表;

    Vector:jdk1.0中的集合,实现了同步。

     a、ArrayList

    ArrayList被称为数组列表,数据采用数组的方式存储,使用连续内存存储,是Java语言中可变长度数组的实现

  ArrayList的经常使用方法:

    add(Object  o);->集合中添加数据;

    remove(Object o)->删除集合中的数据;

    add(int  index, Object element)->给集合中某个索引位置添加一个数据;

    get(int index)->获取集合中某个位置的信息。

  ArrayList的应用:

    基本使用:不使用泛型,目前不多用

     public class TestArrayList {

       public static void main(String[] args) {

        List list= new ArrayList();

        list.add("string");

        list.add(12);

           list.add('w');

      }

     }能够将任何类型对象都存储进去

    泛型的使用:对象中只能持有相同类型对象,不然将发生编译错误。

    Test:(运行须要建立User类,写出其有参构造,get、set方法)

     public class GenericsList {

     public static void main(String[] args) {

.    //建立用户对象

    User user=new User("张三");

    User user1=new User("李四");

    //建立集合对象,存放用户对象

    List<User> userList=new ArrayList<User>();

    userList.add(user);

    userList.add(user1);

     }

     }

     b、LinkedList

    LinkedList是以链表的方式存放的,每一个节点上存放的是数据信息。

  LinkedList的经常使用方法:

    add(E element)—向链表末尾添加一个新的节点,该节点中的数据是参数element指定的对象;

    add(int index, E element)—向链表的指定位置添加一个新的 节点,该节点中的数据是参数element指定的对象;

  扩展方法:

    addFirst(E element)—向链表的头添加新节点,该节点中的数据 是参数element指定的对象;

    addLast(E element)—向链表的末尾添加新节点,该节点中 的数据是参数element指定的对象。

  LinkedList的应用:

    例如:

    public class TestLinkedList {

    public static void main(String[] args) {

    //建立用户对象

 

    User user=new User("王星");

    //建立集合对象,存放用户对象

    List<User> list=new LinkedList<User>();

    list.add(user);

     }

     }

     c、ArrayList和LInkedList的遍历(迭代器遍历(Iterator)-不多使用:经过集合返回迭代器)

    加强for循环:也是经过迭代器的方法获取信息

    public class GenericsList {

    public static void main(String[] args) {

    //建立用户对象

    User user=new User("张三");

    User user1=new User("李四");

    //建立集合对象,存放用户对象

    List<User> userList=new LinkedList<User>();

    userList.add(user);

    userList.add(user1);

      for(User userInfo:userList){

        System.out.println(userInfo);

      }

    }

    }

    for循环遍历:经过索引值获取所对应的数据信息

    public class GenericsList {

    public static void main(String[] args) {

      //建立用户对象

      User user=new User("张三");

      User user1=new User("李四");

      //建立集合对象,存放用户对象

      List<User> userList=new ArrayList<User>();

      userList.add(user);

      userList.add(user1);

        for(int i=0;i<userList.size();i++){                    //(实际存放的数量)

          System.out.println(userList.get(i));

        }

     }

    }

5、Set接口

  一、概念

    继承了Collection接口,Set中所存储的元素是不重复的,可是是无序的,Set中的元素是没有索引的。

  二、Set集合接口的实现类

    HashSet:底层是哈希码值,基于HashMap实现的,调用equals方法比较,都返回false。(比较的是虚地址,可重写equals方法使其同类中的两个对象,而且将属性值都赋值为相同的值,归为同一个对象

    TreeSet:元素不重复,而且元素实现了排序(经过实现Set的另外的子接口SortedSet接口实现排序)

          能够给Set集合中的元素进行指定方式的排序。存储的对象必须实现Comparable接口。

  三、HashSet和TreeSet

    HashSet的经常使用方法:add(E o)将指定的元素添加到set。

    例如:(与ArrayList是相同的)

    public class TreeSetExemple {

    public static void main(String[] args) {

      User user1=new User("张华");

      User user2=new User("张星");

      Set userSet=new TreeSet();

      userSet.add(user1);

      userSet.add(user2);

      Set<User> userSet1=new HashSet<User>();

      userSet1.add(user1);

      userSet1.add(user2);

}

}

    TreeSet的经常使用方法:add(E o):将指定的元素添加到 set(若是还没有存在于该set中);

                first():返回已排序set中当前的第一个(最小)元素;

                last():返回已排序set中当前的最后一个(最大)元素。

    TreeSet中存放的对象须要实现Comparable

    例如:

    public class UserInfo implements Comparable<UserInfo> {

      private String name;

      private int age;

      public int getAge() {

      return age;

      }

      public void setAge(int age) {

        this.age = age;

      }

      public String getName() {

        return name;

      }

      public void setName(String name) {

        this.name = name;

      }

      @Override

      public int compareTo(UserInfo o) {             (判断条件本身定义

       if(o.getName().equals(name)){

        return 0;

      }else return 1;   

    }

     }

    public class TreeSetExemple {

    public static void main(String[] args) {

      UserInfo user1=new UserInfo();

      user.setName("张华");

      UserInfo user2=new UserInfo();

      user2.setName("王华");

      Set<UserInfo> userSet =new TreeSet<UserInfo>();

      userSet.add(user1);

      userSet.add(user2);

    }

    }

  四、HashSet和TreeSet的遍历

     加强for循环

    public class SetExemple {

    public static void main(String[] args) {

      User user1=new User(“王辉");

      User user2=new User("qw");

      Set<User> userSet=newHashSet<User>();

      Set<User> userSet=new TreeSet<User>();

      userSet.add(user1); userSet.add(user2);

      //加强for循环遍历

      for(User user:userSet ){

        System.out.println( user.getUserName());

      }

    }

    }

6、Map集合的经常使用实现类

  一、HashMap

    HashMap中元素的key值不能重复,即彼此调用equals方法,返回为false。排列顺序是不固定的。

   a、HashMap的经常使用方法

    put<key,value>—>存放对象;

    get(key);—>获取key所对应的数据;

    keySet() —> 返回此映射中所包含的键的 set 视图。

   b、HashMap的使用

    public class HashMapTest {

    public static void main(String[] args) {

      User user1=new User("王敏");

      User user2=new User("王辉");

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

      map.put(“001", user1);

      map.put(“002", user2);

    }

    }(运行须要建立User类,写有参构造set、get、toString方法)

  二、TreeMap

   a、TreeMap的经常使用方法与HashMap相似

   b、TreeMap的应用

    适用于按天然顺序或自定义顺序遍历键(key);

    TreeMap根据key值排序,key值须要实现Comparable接口,实现compareTo方法。TreeMap根据compareTo的逻辑,对 key进行排序

    User user1=new User("王敏");

    User user2=new User("王辉");

    TreeMap<String,User> tree=new TreeMap<String,User>();

    tree.put(“001", user1);

    tree.put(“002", user2);

    (根据字符串的字典顺序)

    TreeMap排序:

    public class ScortInfo implements Comparable<ScortInfo> {

      private int num; public int getNum() {

        return num;

      }

      public void setNum(int num) {

        this.num = num;

      }

      @Override

      public int compareTo(ScortInfo o) {

        Return new Integer(this.num).compareTo(o.getNum());

      }

      public ScortInfo(int num) {

        this.num = num;

      }

    }

    public class TreeMapTest {

      public static void main(String[] args) {

        User user1=new User("王敏");

        User user2=new User("王辉");

        TreeMap<ScortInfo,User> tree=new TreeMap<ScortInfo,User>();

        tree.put(new ScortInfo(12), user1);

        tree.put(new ScortInfo(23), user2);

      }

     }

  三、TreeMap和HashMap的遍历

    public static void main(String[] args) {

      User user1=new User("王敏");

      User user2=new User("王辉");

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

      map.put(“001", user1);

      map.put(“002", use2);

      Set set=map.entrySet();

      Iterator<Entry<String, User>> it=set.iterator();

    while(it.hasNext()){

      System.out.println(it.next().getValue().getUserName());

    }

    TreeMap<String,User> tree=new TreeMap<String,User>();

      tree.put(“001", user1);

      tree.put(“002", user2);

      Set se=tree.entrySet();

      Iterator<Entry<String, User>> iter=se.iterator();

    while(iter.hasNext()){

      System.out.println(iter.next().getValue().getUserName());

    }

    }(伪代码)

相关文章
相关标签/搜索