Java集合(一)

2017-06-14  本文已影响9人  浮桥小麦
1.引用数据类型数组
1.在其它包下创建一个学生类
public class Student {
    //两个私有成员变量
    private String name;
    private int age;
    //空参构造
    public Student() {
        super();
    }
    //有参构造
    public Student(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    //重写toString方法
    @Override
    public String toString() {
        return "Student [name=" + name + ", age=" + age + "]";
    }
#2.使用这个学生类创建引用数据类型数组
  //int[] arr = new int[5];//创建基本数据类型数组
    //这种创建数组的方式和这个iOS的差别还是蛮大的
     Student[] arrs = new Student[5];//创建引用数据类型数组
     arrs[0] = new Student("tmac",23);//创建一个学生对象,存储在数组中的第一个位置
        arrs[1] = new Student("kobe",21);
        arrs[2] = new Student("cluo",22);
        arrs[3] = new Student("meixi",24);
        arrs[4] = new Student("jjtmac",26);
        for (int i = 0; i < arrs.length; i++){
            //这里打印引用时,重写toString方法
            System.out.println(arrs[i]);
        }
#注:弄懂这个数组在内存中的存储图解
2.集合和数组的区别
123.png
#集合中两个继承者
List: 有序(存和取的顺序一致),有索引,可以存储重复值
Set:  无序(存和取的顺序不一致),无索引,不可以存储重复值
1233.png
3. Collection接口的学习
//Collection学习
    //1.Collection是个接口不能直接初始化。但是可以用实现了这个接口的子类
        //利用父类引用指向子类对象
        Collection c = new ArrayList();
       //add方法,可以添加任意对象
        boolean b1 = c.add("abc");
        boolean b2 = c.add(true);//可以直接放boolean类型的,因为会自动装箱
        boolean b3 = c.add(100);//自动装箱
        boolean b4 = c.add(new Student("tmac",5));
        System.out.println(b4);//其实返回的都是true,但是还是要这样设计的原因是:Set中存储了重复的就会返回false
        System.out.println(c);
        System.out.println("1-------------------");
     //2.删除方法
        Collection c1 = new ArrayList();
        c1.add("tmac");
        c1.add("jj");
        c1.add("99");
        c1.add("kobe");
        System.out.println(c1);
        //remove方法
        c1.remove("99");//删除指定元素
        System.out.println(c1);
        System.out.println("2-------------------");

        //3.contains:是否包含,返回boolean
        System.out.println(c1.contains("jj"));
        System.out.println("3----------------------");

     //4. clear清空
        c1.clear();
        System.out.println(c1);
        System.out.println("4---------------------");

     //5.isEmpty:判断是否为空
        System.out.println(c1.isEmpty());
        System.out.println("5---------------------");

     //6. int size():获取集合中元素的个数
        c1.add("我爱你");
        int num = c1.size();
        System.out.println(num);

4. 集合的遍历之集合转数组遍历
 //1.
       Collection c = new ArrayList();
       c.add("a");
       c.add("b");
       c.add("c");
       c.add("d");

       //toArray方法将集合转成数组,这个方法返回的是Object[]的数组
        Object[] strArr =  c.toArray();
        for (int i = 0; i < strArr.length; i++){
            System.out.println(strArr[i]);
        }

        //存自定义对象
        Collection c1 = new ArrayList();
        c1.add(new Student("jj",89));
        c1.add(new Student("jhj",78));
        c1.add(new Student("jfjdk",165));
        Object[] arr = c1.toArray();
        for (int i = 0; i < arr.length; i++){

            System.out.println(arr[i]);
        }

5. 带All方法功能演示
//1. boolean addAll(Collection c):集合中添加一个集合
       Collection c = new ArrayList();
       c.add("a");
       c.add("b");
       c.add("c");

       //创建第二个集合
        Collection c1 = new ArrayList();
        c1.add("d");
        c1.add("e");
        c1.add("f");

        c.addAll(c1);
        //注意这种情况,自己试试就知道什么效果了 c.add(c1);
        System.out.println(c);

        //2. boolean removeAll(Collection c):移除一个集合
          c.removeAll(c1);//删除的是交集
        System.out.println(c);

        //3. boolean containAll(Collection c):判断是否包含这个集合
         boolean result = c.containsAll(c1);
        System.out.println(result);

        //4. boolean retainAll(Collection c):保留交集
        Collection c2 = new ArrayList();
        c2.add("j");
        c2.add("e");
        c2.add("f");c1.retainAll(c2);//保留交集,当c1改变了,就是true,如果c1没有变,就返回false
        System.out.println(c1);

7. 集合迭代器遍历
 //需要查看集合中的每个元素,用迭代
    //1.对集合中的元素进行迭代-遍历
        Collection c = new ArrayList();
        c.add("ta");
        c.add("j");
        c.add("dd");
        c.add("h");

        //获取迭代器-iterator:迭代器
        Iterator it = c.iterator();

        //获取到迭代器后,可以用迭代器中的方法了
        //2.判断集合中是否有元素
        //boolean b = it.hasNext();
       // System.out.println(b);
        for (int i = c.size(); i > 0; i--){
            //3.通过next()方法获取其中的元素
           boolean b = it.hasNext();
           if (b){
               Object ob = it.next();
               System.out.println(ob);
           }else{
               i = 0;
               System.out.println("集合中已经没有元素了");
           }
        }
        System.out.println("1-----------------");

        //4.我们自己的类放在集合中,如何迭代(上面是放的String,系统的类)
        Collection c1 = new ArrayList();
        c1.add(new Student("tmac",45));//我们在添加这个Student对象时,会做一个自动类型提升
        c1.add(new Student("kobe",23));// Object ob = new Student()
        c1.add(new Student("jj",26));
        c1.add(new Student("jjtmac",34));
        Iterator it1 = c1.iterator();
        while (it1.hasNext()){
            Object ob = it1.next();
            Student st = (Student)ob;
            System.out.println(st.getName());
            //我们在这里想直接调用Student对象的方法,需要将ob向下转型
            System.out.println(ob);
        }

上一篇下一篇

猜你喜欢

热点阅读