zoukankan      html  css  js  c++  java
  • 类集

    • 类集就是一个动态的对象数组:可以改变大小
    • JAVA类集接口框架:

        1 Collection       元素的类集

        2 List         元素的序列

        3 Set      没有重复元素的类集

        4 SortedSet    没有重复元素且排序的类集

        5 Map      元素为二元偶对的汇集,不能重复

        6 SortedMap   在Map基础上加上排序的要求

        7 Iterator    一个可遍历总额类集的对象

        8 ListIterator      可遍历一个序列的List的对象

    • 以上这些全部是接口,我们只要掌握最核心的三个即可:
    1. Collection:存放的是一个一个的对象,每次存放当个对象s
    2. Map:每次存放一对值:Key----value
    3. Iterator:输出接口,只要是集合都要去使用iterator输出
    • Collection接口:在一般开发中为了清楚的表现处理数据的存放往往不直接使用Collection接口
    •     子接口:List
    •     子接口:Set
    • List既然是一个接口,则必然要使用必须依靠子类------ArrayList

        使用方式:List  m=new ArrayList();

    •   ArrayList类:
    •     扩展AbstraList并执行List接口
    •     是动态数组,采用异步处理方式
    Code
    class Person
    {
        
    private String name ;
        
    public Person(String name)
        {
            
    this.name = name ;
        }
        
    public String toString()
        {
            
    return "姓名:"+this.name ;
        }
    };
    public class Demo01
    {
        
    public static void main(String args[])
        {
            
    // 准备好了一个对象数组容器
            List all = new ArrayList() ;
            
    // 向集合中加入数据
            all.add("AAAA") ;
            all.add(
    "BBBB") ;
            all.add(
    new Person("cccc")) ;

            
    // 向第二个元素处加入新内容
            all.add(1,"www.mldn.cn") ;
            
    // all.remove(1) ;(删除元素)
            for(int i=0;i<all.size();i++)
            {
                System.out.println(all.get(i)) ;
            }
        }
    };
    • 输出时原则上已经不用上述的做法,记住只要是集合就用Itreator输出
    Code
    Iterator iter = all.iterator() ;//实例化方法
            
    while(iter.hasNext())//判断是否还有数据
            {
                Object obj 
    = iter.next() ;//对象都是object的子类向上转型输出即可
                System.out.println(obj) ;
            }
    • 注意在上面我们可以网ArrayList中加入了两种对象,分别是 String和person对象,JDK1.5后提供了方法只能加入一种
    Code
    List<java.lang.String> all = new ArrayList<java.lang.String>() ;
    •     HashSet类
    •       扩展了AbstractSet并实现Set接口
    •       使用散列表存储,无序列存储
    •         使用基本和 ArrayList一样只是不同的是没有序列,不论怎样往里面存输出时随机无序的。
    • Set<java.lang.String> all = new HashSet<java.lang.String>() ;
    •     ************************************************
    • Set与list的区别:List中允许有重复的元素,并保留下来。Set中不允许,被替换掉
    •     *****************************************************
    • HashSet是无序的,有序的用TreeSet,靠的是Comparable接口来排序
    •     TreeSet类:
    •       与HashSet不同的是,TreeSet升序排列数据
    • Set<java.lang.String> all = new TreeSet<java.lang.String>() ; 
    •     HashMap类:
    •       使用散列表实现Map接口
    •       映射类:key---value

    Code
    public static void main(String args[])
        {
            Map
    <java.lang.String,java.lang.String> m = new HashMap<java.lang.String,java.lang.String>() ;
            m.put(
    "张三","123456") ;
            m.put(
    "李四","654321") ;
            m.put(
    "王五","890762") ;
       //存数据都是用put,去用get
            
    // 已经准备好了一个电话本,在内存中保留下来
            
    // 要查找张三的电话
            System.out.println(m.get("赵六")) ;
        }

    • Map的主要功能是作为查询用,不是作为输出用
    • Map接口对戏那个不能直接使用Iterator输出,如果非要用Iterator输出,必须使用以下的步骤
    • Map---Set---Iterator---Map.Entry---key,values
    Code
    public static void main(String args[])
        {
            Map
    <java.lang.String,java.lang.String> m = new HashMap<java.lang.String,java.lang.String>() ;
            m.put(
    "张三","123456") ;
            m.put(
    "李四","654321") ;
            m.put(
    "王五","890762") ;

            Set all 
    = m.entrySet() ;
            Iterator iter 
    = all.iterator() ;
            
    while(iter.hasNext())
            {
                Map.Entry me 
    = (Map.Entry)iter.next() ;
                System.out.println(me.getKey()
    +" --> "+me.getValue()) ;
            }
        }
    •     TreeMap类
    •       可以对数据进行排序,可以快速检索
    • Map<java.lang.String,java.lang.String> m = new TreeMap<java.lang.String,java.lang.String>() ;


    简单介绍下JDK以前用到的类:

    • 枚举类Eumeration
    •   可以对一个对象的类集中的元素进行枚举  boolean hasMoreelements()  Object  nextElement()
    • 枚举类Eumeration与Iterator的功能一致,都是用于输出集合中的内容
    • 两者对比下:

    1 boolean hasMoreelements()  Object  nextElement()

    2      hasNext()          next()

    • 发现用Iterator明显简单,且List和Set都不能使用Enumeration输出,而List另一个子类:Vector可以使用Eumeration输出
    •     Vector类
    •         实现动态数组 是同步的
    • 用法与ArrayList几乎是一样的

    Code
    public static void main(String args[])
        {
            Vector v 
    = new Vector() ;
            v.add(
    "A") ;
            v.add(
    "A") ;
            v.add(
    "A") ;
            v.add(
    "A") ;
            v.add(
    "A") ;
            v.add(
    "A") ;
            Enumeration e 
    = v.elements() ;
            
    while(e.hasMoreElements())
            {
                System.out.println(e.nextElement()) ;
            }
        }

    • Stack类:是vector的子类,后进先出标准的堆栈
    Code
    public static void main(String args[])
        {
            Stack s 
    = new Stack() ;
            s.push(
    "A") ;
            s.push(
    "B") ;
            
    // System.out.println(s.empty()) ;
            
    // 取值
            while(!s.empty())
            {
                System.out.println(s.pop()) ;
            }
            
    // 如果内容已经全部弹出则再弹会出现错误
            s.pop() ;
        }
    • HashTable和HashMap是相似的,但其是同步的,且不支持迭代函数
    • Properties类:是HashTable的子类,用来保持值的列表
    • 是属性类,与HashTable不同的是:

                HashTable是主要来保存对象的,而Properties主要用来保存String的

                setProperty(String key,String value)

    总结:

    • ArrayList与Vector

        ArrayList              Vector

        异步                 同步

        只支持Iterator输出          支持Iterator和Enumeration输出

        出现较晚                出现较早

    • HashMap和HashTable

        HashMap              HashTable

        异步                  同步

        不直接支持Iterator输出        不直接支持Iterator输出

        出现较晚                出现较早


    • 清楚:以下几点:
    • 保存单个值的集合用Collectiion

          1 -List:允许有重复元素

              --ArrayList:异步处理,新出现的类,只能用Iterator输出

              --Vector:同步处理,旧的类,能用Iterator和Enumeration类输出

          2 -Set:不允许有重复的元素

              --HashSet:散列无序

              --TreeSet:有序,按Comparable排序

    • 保存一对值(Map)

          1 -HashMap:异步处理,新出的类

          2 -HashTable:同步处理,旧的类

          3 -TreeMap:按key进行排序

    • 输出:

          1 -Iterator:新的类方法名称较短

          2 -Enumeration:旧的类,方法名称较长

    应用:一------多   多------多

    Code
    class Person
    {
        
    private String name ;
        
    private int age ;
        
    private List<Email> allEmails ;
        
        
    public Person()
        {
            
    this.allEmails = new ArrayList<Email>() ;
        }

        
    public Person(String name,int age)
        {
            
    this() ;
            
    this.setName(name) ;
            
    this.setAge(age) ;
        }
        
    public List getAllEmails()
        {
            
    return this.allEmails ;
        }
        
    public void setAllEmails(List allEmails)
        {
            
    this.allEmails = allEmails ;
        }
        
    public void setName(String name)
        {
            
    this.name = name ;
        }
        
    public void setAge(int age)
        {
            
    this.age = age ;
        }
        
    public String getName()
        {
            
    return this.name ;
        }
        
    public int getAge()
        {
            
    return this.age ;
        }
        
    public String toString()
        {
            
    return "姓名:"+this.getName()+",年龄:"+this.getAge() ;
        }
    };
    class Email
    {
        
    private String url ;
        
    private String userName ;
        
    private String flag ;

        
    public Email(String url,String userName,String flag)
        {
            
    this.setUrl(url) ;
            
    this.setUserName(userName) ;
            
    this.setFlag(flag) ;
        }

        
    public void setUrl(String url)
        {
            
    this.url = url ;
        }
        
    public void setUserName(String userName)
        {
            
    this.userName = userName ;
        }
        
    public void setFlag(String flag)
        {
            
    this.flag = flag ;
        }
        
    public String getUrl()
        {
            
    return this.url ;
        }
        
    public String getUserName()
        {
            
    return this.userName ;
        }
        
    public String getFlag()
        {
            
    return this.flag ;
        }
        
    public String toString()
        {
            
    return "网站地址:"+this.getUrl()+",EMAIL名称:"+this.getUserName()+this.getFlag() ;
        }
    };

    public class ColDemo01
    {
        
    public static void main(String args[])
        {
            Person p 
    = new Person("LXH",28) ;
            Email e1 
    = new Email("www.163.com","mldnqa","@163.com") ;
            Email e2 
    = new Email("www.263.com","li_xing_hua","@263.net") ;
            Email e3 
    = new Email("www.163.com","mldnkf","@163.com") ;

            p.getAllEmails().add(e1) ;
            p.getAllEmails().add(e2) ;
            p.getAllEmails().add(e3) ;

            
    // 一个人拥有3个email地址
            
    // 通过输出体现
            List<Email> all = p.getAllEmails() ;
            Iterator iter 
    = all.iterator() ;
            System.out.println(p) ;
            
    while(iter.hasNext())
            {
                Email e 
    = (Email)iter.next() ;
                System.out.println(
    "  |- "+e) ;
            }
        }
    };
    Code
    class Student
    {
        
    private String name ;

        
    private List allSubjects ;

        
    public Student()
        {
            
    this.allSubjects = new ArrayList() ;
        }
        
    public Student(String name)
        {
            
    this() ;
            
    this.setName(name) ;
        }

        
    public List getAllSubjects()
        {
            
    return this.allSubjects ;
        }
        
        
    public void setName(String name)
        {
            
    this.name = name ;
        }
        
    public String getName()
        {
            
    return this.name ;
        }
        
    public String toString()
        {
            
    return "学生姓名:"+this.getName() ;
        }
    };
    class Subject
    {
        
    private String name ;
        
        
    private List allStudents ;

        
    public Subject()
        {
            
    this.allStudents = new ArrayList() ;
        }
        
    public Subject(String name)
        {
            
    this() ;
            
    this.setName(name) ;
        }

        
    public List getAllStudents()
        {
            
    return this.allStudents ;
        }

        
    public void setName(String name)
        {
            
    this.name = name ;
        }
        
    public String getName()
        {
            
    return this.name ;
        }
        
    public String toString()
        {
            
    return "课程名称:"+this.getName() ;
        }
    };

    public class ColDemo02
    {
        
    public static void main(String args[])
        {
            Student s1 
    = new Student("张三") ;
            Student s2 
    = new Student("李四") ;
            Student s3 
    = new Student("王五") ;
            Student s4 
    = new Student("赵六") ;
            Student s5 
    = new Student("孙七") ;

            Subject su1 
    = new Subject("C++") ;
            Subject su2 
    = new Subject("JAVA") ;
            Subject su3 
    = new Subject("软件工程") ;

            
    // 多个学生选择同一门课程
            su1.getAllStudents().add(s1) ;
            su1.getAllStudents().add(s2) ;
            su1.getAllStudents().add(s3) ;

            su2.getAllStudents().add(s2) ;
            su2.getAllStudents().add(s4) ;

            su3.getAllStudents().add(s5) ;

            s1.getAllSubjects().add(su1) ;
            s2.getAllSubjects().add(su1) ;
            s2.getAllSubjects().add(su2) ;
            s3.getAllSubjects().add(su1) ;
            s4.getAllSubjects().add(su2) ;
            s5.getAllSubjects().add(su3) ;

            print(su1) ;
            print(su2) ;
            print(su3) ;

            System.out.println(
    "------------------------") ;
            print(s1) ;
            print(s2) ;
            print(s3) ;
            print(s4) ;
            print(s5) ;
        }
        
    public static void print(Subject s)
        {
            System.out.println(
    "* 课程信息:"+s) ;
            Iterator iter 
    = s.getAllStudents().iterator() ;
            
    while(iter.hasNext())
            {
                System.out.println(
    " |- "+iter.next()) ;
            }
        }
        
    public static void print(Student s)
        {
            System.out.println(
    "* 学生信息:"+s) ;
            Iterator iter 
    = s.getAllSubjects().iterator() ;
            
    while(iter.hasNext())
            {
                System.out.println(
    " |- "+iter.next()) ;
            }
        }
    };
    Code
    interface Book
    {
        
    // 书的价格、书的名字、书的信息
        public float getPrice() ;
        
    public String getName() ;
        
    public String getInfo() ;
    }

    class ChildBook implements Book
    {
        
    private String name ;
        
    private float price ;
        
    private String info ;

        
    public ChildBook(String name,float price,String info)
        {
            
    this.setName(name) ;
            
    this.setPrice(price) ;
            
    this.setInfo(info) ;
        }

        
    public String getName()
        {
            
    return this.name ;
        }
        
    public float getPrice()
        {
            
    return this.price ;
        }
        
    public String getInfo()
        {
            
    return this.info ;
        }
        
    public void setName(String name)
        {
            
    this.name = name ;
        }
        
    public void setPrice(float price)
        {
            
    this.price = price ;
        }
        
    public void setInfo(String info)
        {
            
    this.info = info ;
        }
        
    public String toString()
        {
            
    return "儿童书:书名:"+this.getName()+",价格:"+this.price+",简介:"+this.getInfo() ;
        }
    };

    class ComputerBook implements Book
    {
        
    private String name ;
        
    private float price ;
        
    private String info ;

        
    public ComputerBook(String name,float price,String info)
        {
            
    this.setName(name) ;
            
    this.setPrice(price) ;
            
    this.setInfo(info) ;
        }

        
    public String getName()
        {
            
    return this.name ;
        }
        
    public float getPrice()
        {
            
    return this.price ;
        }
        
    public String getInfo()
        {
            
    return this.info ;
        }
        
    public void setName(String name)
        {
            
    this.name = name ;
        }
        
    public void setPrice(float price)
        {
            
    this.price = price ;
        }
        
    public void setInfo(String info)
        {
            
    this.info = info ;
        }
        
    public String toString()
        {
            
    return "电脑书:书名:"+this.getName()+",价格:"+this.price+",简介:"+this.getInfo() ;
        }
    };

    class BookShop
    {
        
    private String name ;
        
    // 一个书店包含多种书
        private List allBooks ;

        
    public BookShop()
        {
            
    this.allBooks = new ArrayList() ;
        }
        
    public BookShop(String name)
        {
            
    this() ;
            
    this.setName(name) ;
        }

        
    // 得到全部的书
        public List getAllBooks()
        {
            
    return this.allBooks ;
        }

        
    public void append(Book book)
        {
            
    this.allBooks.add(book) ;
        }

        
    public void delete(Book book)
        {
            
    this.allBooks.remove(book) ;
        }

        
    // 根据书的名字,去找到一本书
        public Book findByName(String name)
        {
            
    // 从已有的数据中进行依次查询
            Book book = null ;
            Iterator iter 
    = this.allBooks.iterator() ;
            
    while(iter.hasNext())
            {
                
    // 进行依次的比较
                Book temp = (Book)iter.next() ;
                
    if(name.equals(temp.getName()))
                {
                    
    // 如果名字相等,则表示找到了
                    book = temp ;
                    
    break ;
                }
            }
            
    return book ;
        }

        
    // 书的检索,书的模糊查询
        public List index(String keyWord)
        {
            List l 
    = new ArrayList() ;

            Iterator iter 
    = this.allBooks.iterator() ;
            
    while(iter.hasNext())
            {
                Book b 
    = (Book)iter.next() ;
                
    //通过indexof可以查到与关键字的匹配
                if(b.getName().indexOf(keyWord)!=-1)
                {
                    l.add(b) ;
                }
            }

            
    return l ;
        }

        
    public void setName(String name)
        {
            
    this.name = name ;
        }
        
    public String getName()
        {
            
    return this.name ;
        }
    };

    public class ColDemo1
    {
        
    public static void main(String args[])
        {
            Book b1 
    = new ChildBook("一千零一夜",10.0f,"一些传说故事") ;
            Book b2 
    = new ChildBook("小鸡吃大灰狼",20.0f,"一件奇怪的事情") ;
            Book b3 
    = new ChildBook("HALIBOTE",25.0f,"魔幻故事") ;
            Book b4 
    = new ComputerBook("JAVA",65.0f,"JAVA 语言的核心技术") ;
            Book b5 
    = new ComputerBook("C++",50.0f,"C++ 语言的核心技术") ;
            Book b6 
    = new ComputerBook("Linux",50.0f,"服务器搭建") ;

            BookShop bs 
    = new BookShop("MLDN 网上书店") ;
            bs.append(b1) ;
            bs.append(b2) ;
            bs.append(b3) ;
            bs.append(b4) ;
            bs.append(b5) ;
            bs.append(b6) ;

            
    // print(bs.getAllBooks()) ;
            
    // print(bs.index("A")) ;
            
    // 假设将C++这本书从书店删除掉
            Book b = bs.findByName("C++") ;
            
    // System.out.println(b) ;
            bs.delete(b) ;
            print(bs.getAllBooks()) ;
        }
        
    public static void print(List all)
        {
            Iterator iter 
    = all.iterator() ;
            
    while(iter.hasNext())
            {
                Book b 
    = (Book)iter.next() ;
                System.out.println(b) ;
            }
        }
    };

  • 相关阅读:
    hdoj 3376,2686 Matrix Again 【最小费用最大流】
    Trustie站点代码托管使用指南
    POJ 2442 Sequence(堆的使用练习)
    猛犸机器学习开发实践
    关于《金字塔原理》的主要内容
    实战案例:如何快速打造1000万+播放量的抖音网红?
    【限时特惠】网易云易盾验证码全线95折!智能无感知、滑动拼图、点选验证-7天免费体验!
    当GDPR来敲门,中国互联网企业该如何应对?
    H5活动产品设计指南基础版
    Box(视图组件)如何在多个页面不同视觉规范下的复用
  • 原文地址:https://www.cnblogs.com/zhxiaomiao/p/1412639.html
Copyright © 2011-2022 走看看