Collection集合总结

集合(Collection):

    (1)集合的由来?

        我们学习的是Java -- 面向对象 -- 操作很多对象 -- 存储 -- 容器(数组和StringBuffer) -- 数组

        而数组的长度固定,所以不适合做变化的需求,Java就提供了集合供我们使用。

    (2)集合和数组的区别?

        A:长度区别

            数组固定

            集合可变

        B:内容区别

            数组可以是基本类型,也可以是引用类型

            集合只能是引用类型

        C:元素内容

            数组只能存储同一种类型

            集合可以存储不同类型(其实集合一般存储的也是同一种类型)

    (3)集合的继承体系结构?

        由于需求不同,Java就提供了不同的集合类。这多个集合类的数据结构不同,但是它们都是要提供存储和遍历功能的,

        我们把它们的共性不断的向上提取,最终就形成了集合的继承体系结构图。

 

        Collection

            |--List

                |--ArrayList

                |--Vector

                |--LinkedList

            |--Set

                |--HashSet

                |--TreeSet

    (4)Collection的功能概述(

        A:添加功能

           boolean add(Object obj):添加一个元素

           boolean addAll(Collection c):添加一个集合的元素

        B:删除功能

           void clear():移除所有元素

           boolean remove(Object o):移除一个元素

           boolean removeAll(Collection c):移除一个集合的元素,只要有一个元素被移除了,就返回true。

        C:判断功能

           boolean contains(Object o):判断集合中是否包含指定的元素

           boolean containsAll(Collection c):判断集合中是否包含指定的集合元素,只有包含所有的元素,才叫包含

           boolean isEmpty():判断集合是否为空

        D:获取功能

           Iterator<E> iterator()(重点)

        E:长度功能

           int size():元素的个数

           面试题:数组有没有length()方法呢?字符串有没有length()方法呢?集合有没有length()方法呢?

        F:交集(了解)

           boolean retainAll(Collection c): 假设有两个集合A,B。A对B做交集,最终的结果保存在A中,B不变。返回值表示的是A是否发生过改变。

        G:把集合转数组(了解)

           Object[] toArray()

 

    (5)Collection集合的遍历

        A:把集合转数组(了解)

        B:迭代器(集合专用方式)


 

import java.util.ArrayList;

import java.util.Collection;



/*

 * 集合的遍历。其实就是依次获取集合中的每一个元素。

 *

 * Object[] toArray():把集合转成数组,可以实现集合的遍历

 */

public class CollectionDemo3 {

    public static void main(String[] args) {

        // 创建集合对象

        Collection c = new ArrayList();



        // 添加元素

        c.add("hello"); // Object obj = "hello"; 向上转型

        c.add("world");

        c.add("java");



        // 遍历

        Object[] objs = c.toArray(); //集合转数组

        for (int x = 0; x < objs.length; x++) {

            // System.out.println(objs[x]);

            // 我知道元素是字符串,我在获取到元素的的同时,还想知道元素的长度。

            // System.out.println(objs[x] + "---" + objs[x].length());

            // 上面的实现不了,原因是Object中没有length()方法

            // 我们要想使用字符串的方法,就必须把元素还原成字符串

            // 向下转型

            String s = (String) objs[x];

            System.out.println(s + "---" + s.length());

        }

    }

}

    (6)迭代器

        A:Iterator iterator():迭代器,集合的专用遍历方式

        B:Object next():获取元素,并移动到下一个位置。

               NoSuchElementException:没有这样的元素,因为你已经找到最后了。不要多次使用it.next()方法

        C:boolean hasNext():如果仍有元素可以迭代,则返回 true。

    (7)Collection集合的案例(遍历方式 迭代器)

        集合的操作步骤:

            A:创建集合对象

            B:创建元素对象

            C:把元素添加到集合

            D:遍历集合

 

        A:存储字符串并遍历           

 import java.util.Collection;

            import java.util.ArrayList;

            import java.util.Iterator;



            public class CollectionDemo {

                public static void main(String[] args) {

                    //创建集合对象

                    Collection c = new ArrayList();



                    //创建并添加元素

                    c.add("hello");

                    c.add("world");

                    c.add("java");



                    //遍历集合

                    Iterator it = c.iterator();//实际返回的肯定是子类对象,这里是多态

                    while(it.hasNext()) {//最后一个不应该写,所以判断是否有下一个元素,有就获取,没有就不搭理它

                        String s =(String) it.next();//获取元素,并移动到下一个位置。

                        System.out.println(s);

                    }

                }

            }

        B:存储自定义对象并遍历           

 public class Student {

                private String name;

                private int age;



                public Student(){}



                public Student(String name,int age) {

                    this.name = name;

                    this.age = age;

                }



                //getXxx()/setXxx()

            }



            import java.util.Collection;

            import java.util.ArrayList;

            import java.util.Iterator;



            public class StudentDemo {

                public static void main(String[] args) {

                    //创建集合对象

                    Collection c = new ArrayList();



                    //创建学生对象

                    Student s1 = new Student("林青霞",27);

                    Student s2 = new Student("风清扬",30);

                    Student s3 = new Student("刘意",30);

                    Student s4 = new Student("武鑫",25);

                  

                    //添加元素

                    c.add(s1);

                    c.add(s2);

                    c.add(s3);

                    c.add(s4);

                    c.add(new Student("孙尚香", 18));// 匿名对象



                    //遍历集合

                    Iterator it = c.iterator();

                    while(it.hasNext()) {

                        Student s = (Student)it.next();

                        System.out.println(s.getName()+"---"+s.getAge());

                    }

                }

            }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值