10 java集合框架

来源:互联网 发布:sql 数据库链接 编辑:程序博客网 时间:2024/09/21 09:01

java集合大方向分

  • Map集合接口  以键值对存放元素,键不可重复,值可重复

    • HashMap

      • 线程不安全,允许键或值为null

        new HashMap().put("key","值可为null")

        new HashMap().keyset()键集合.iterator() 其中迭代器中项目可转(String)值

      TreeMap

      • 线程不安全,按键排序

      HashTable

      • 使用起来与HashMap类似

    Collection集合接口

    • List集合接口  有顺序能重复

      • ArrayList

        • 查询效率高,增删效率低,线程不安全,底层数组实现

          List.removeall(list)以子集合的方法删除集合

        LinkedList

        • 查询效率低,增删效率高,底层双向循环链表实现

          new LinkedList().add("添加元素")

          set(0,"替换了第一个元素为当前值")

        Vector

        • 重量级,占用更多的系统开销,线程安全,底层数组实现

          new Vector().subList(1,2)从第一个索引截取2个长度的集合

        Stack

        • 继承Vector,先进后出,后进先出

          注意,push和pop是Stack类独有的,不能将Stack对象向上转型为List,

              而indexOf则是List方法,故此类是失败产品

      Set集合接口  无顺序不能重复

      • HashSet

        • 增删速度快,底层数据结构是哈希表

          当向hashset添加新对象时,如果集合中没有与新对象的"哈希码"相同的元素,则新对象

          肯定不会重复。如果集合中有与新对象的"哈希码"相同的元素,则新对象是否重复

          依赖于equals()方法

        TreeSet

        • 增删效率高,占用空间大

          不能重复可自然[例如a,b,c基本数据类型,自定义类对象见范例]排序

    --------------------------------------------------分隔符--------------------------------------------------

    TreeSet排序范例

    public class Person implements Comparable{

        int age = 0; // 属性自行添加

        String strname = "";

        /* 实现比较器 */

        public int compareTo(Object arg0) {

            Person p = (Person)arg0;

            int num = new Integer(this.age).compareTo(new Integer(p.age));

            if(num==0)

                return 0;

            return num;

            } }

    ==========>>将Person添入TreeSet中

    Set treeSet = new TreeSet();

    Person person = new Person();

    person.setAge(5);

    person.setStrname("xiangm1");

    Person person2 = new Person();

    person2.setAge(3);

    person2.setStrname("xiangm2");

    treeSet.add(person);

    treeSet.add(person2);

    Iterator it = treeSet.iterator();

    while(it.hasNext())

    {

    ....Person p = (Person)it.next();

    ....System.out.println("年"+p.getAge()+"名字"+p.getStrname());

    }

0 0
原创粉丝点击