美文网首页
Java集合(一)

Java集合(一)

作者: 浮桥小麦 | 来源:发表于2017-06-14 22:09 被阅读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);
            }
    
    

    相关文章

      网友评论

          本文标题:Java集合(一)

          本文链接:https://www.haomeiwen.com/subject/jxbdqxtx.html