Java集合(一)

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);
        }

最后编辑于
?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352

推荐阅读更多精彩内容