栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

暑假java第六天

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

暑假java第六天

1.集合概述

1)什么是集合?有什么用?
数组其实就是一个集合。集合实际上就是一个容器。可以用来容纳其他类型的数据。
集合为什么说在开发中使用较多?
集合是一个容器,是一个载体,可以一次容纳多个对象。
在实际开发中,假设连接数据库,数据库当中有10条记录,
那么假设把这10条记录查询出来,在java程序中会将10条
数据封装成10个java对象,然后将10个java对象放到某一个
集合当中,将集合传到前端,然后遍历集合。将一个数据一个
数据展现出来。

2)集合中存储的是引用。
集合不能直接存储基本数据类型,另外集合也不能直接存储java对象,
集合当中存储的都是java对象的内存地址。(或者说集合中存储的是引用。)
list.add(100);//自动装箱Integer
注意:
集合在java中本身是一个容器,是一个对象。
集合中任何时时候存储的都是"引用"。

3)在java中每一个不同的集合,底层会对于不同的数据结构。往不同的集合中
存储元素,等于将数据放到了不同的数据结构当中。什么是数据结构?数据存储的
结构就是数据结构。不同的数据结构,数据存储方式不同。例如:
数组,二叉树,链表,哈希表…
以上这些都是从常见的数据结构。

你往集合c1中放数据,可能是放到数组上了。
你往集合c2中放数据,可能是放到二叉树上了。
…
你是要不同的集合等同于使用不同的数据结构。

new ArrayList(); 创建一个集合,底层是数组。
new LinkedList(); 创建一个集合对象,底层是链表。
new TreeSet(); 创建一个集合对象,底层是二叉树。

4)集合在java JDK中哪个包下?
java.util.*;
所有的集合类和集合接口都在java.util包下。

5)集合的继承结构图背会!

6)在java中集合分为两大类:
一类是单个方式存储元素:
单个方式存储元素,这一类集合中超级父接口: java.util.Collection;

一类是以键值对儿的方式存储元素:
以键值对的方式存储元素,这一类集合中超级父接口: java.util.Map;

2.集合继承结构图(老杜)


3.集合接口中常用的方法
package com.jmpower.javase.collection;

import java.util.ArrayList;
import java.util.Collection;


public class CollectionTest01 {
    public static void main(String[] args) {
        //创建一个集合对象
        //Collection c=new Collection();//接口是抽象的,无法实例化。

        //多态
        Collection c=new ArrayList();
        //测试Collection接口中的常用方法:
        //1.c.add(),添加元素
        c.add(1200);//自动装箱,实际上是放进去了一个对象的内存地址。Integer x=new Integer(1200);
        c.add(3.14);//自动装箱
        c.add(new Object());
        c.add(new Student());;
        c.add(true);

        //2.c.size(),获取集合中元素的个数
        System.out.println("集合中的元素个数:"+c.size());// 5

        //3.c.clear(),清空集合
        c.clear();
        System.out.println("集合中的元素个数:"+c.size());// 0

        //再次向集合中添加元素
        c.add("Hello");//"Hello"对象的内存地址存到了集合当中
        c.add("World");
        c.add("浩克");
        c.add("花木兰");

        //4.c.contains(Object o),判断集合中是否包含某个元素
        boolean flag=c.contains("浩克");
        System.out.println(flag);//true
        boolean flag2=c.contains("浩克2");
        System.out.println(flag2);//false

        //当前集合中的元素个数5
        System.out.println("集合中的元素个数:"+c.size());// 5

        //5.c.remove(),删除集合中指定元素
        c.remove("浩克");
        System.out.println(c.contains("浩克"));//false
        System.out.println("集合中的元素个数:"+c.size());// 4

        //6.c.isEmpty(),判断集合是否为空
        System.out.println(c.isEmpty());// false
        c.clear();//清空集合
        System.out.println(c.isEmpty());// true

        //再次添加元素
        c.add("abc");
        c.add("HelloWorld!");
        c.add("efg");
        c.add(new Student());

        //7.c.toArray(),转换成数组(了解,使用不多)
        Object[] obj=c.toArray();
        for(int i=0;i
            System.out.print(obj[i].toString()+" ");
        }
        System.out.println();
    }
}
class Student{

}
4.迭代专题

样例1(迭代器的使用)

package com.jmpower.javase.collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;


public class CollectionTest02 {
    public static void main(String[] args) {
        //注意: 以下的遍历方式/迭代方式,是所有Collection通用的一种方式。
        //在Map集合中不能用。在所有的Collection以及子类中使用。

        //创建集合对象
        Collection c=new ArrayList();//后面集合无所谓,主要看前面的Collection接口,怎么遍历/迭代。
        //添加元素
        c.add(100);
        c.add("abc");
        c.add("def");
        c.add(new Object());
        //对集合Collection进行遍历/迭代
        //第一步: 获取集合对象的迭代器对象Iterator
        Iterator it=c.iterator();
        //第二步: 通过以上获取的迭代器对象开始迭代/遍历集合
        
        while (it.hasNext())
        {
            //这样写许
            
            //这样也许
            System.out.println(it.next());
        }

    }
}

样例2(迭代器是通用的)

package com.jmpower.javase.collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;


public class CollectionTest03 {
    public static void main(String[] args) {
        //创建集合对象
        Collection c1=new ArrayList();//ArrayList集合:有序可重复
        //添加元素
        c1.add(1);
        c1.add(2);
        c1.add(3);
        c1.add(4);
        c1.add(1);

        //迭代集合
        Iterator it=c1.iterator();
        while(it.hasNext())
        {
            //存进去是什么类型,取出来就是什么类型。
            Object obj=it.next();
            
            //只不过在输出的时候会转换成字符串。因为这里println会调用toString()方法。
            System.out.println(obj);
        }

        //HashSet集合: 无序不可重复
        Collection c2=new HashSet();
        //无序:存进去和取出来的顺序不一定相同。
        //不可重复: 存储100,不能再存储100
        c2.add(100);
        c2.add(400);
        c2.add(300);
        c2.add(100);
        Iterator it2=c2.iterator();
        while(it2.hasNext())
        {
            System.out.println(it2.next());
        }
    }
}
5.深入Collection的conatins方法

1)contain方法底层调用equals方法

package com.jmpower.javase.collection;

import java.util.ArrayList;
import java.util.Collection;


public class CollectionTest04 {
    public static void main(String[] args) {
        //创建集合对象
        Collection c=new ArrayList();

        //向集合中存储元素
        String s1=new String("abc");
        c.add(s1);

        String s2=new String("def");
        c.add(s2);

        String s3=new String("abc");

        //集合的元素个数
        System.out.println("元素的个数是:"+c.size());
        System.out.println(c.contains(s3));//true
    }
}

2)测试contains方法

package com.jmpower.javase.collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Objects;

public class CollectionTest05 {
    public static void main(String[] args) {
        //创建集合对象
        Collection c=new ArrayList();
        //创建用户对象
        User u1=new User("jack");
        //加入集合
        c.add(u1);

        //判断集合中是否包含u2
        User u2=new User("jack");

        //没有重写equals之前: 这个结果是false
        //System.out.println(c.contains(u2));// false

        //重写equals之后.比较的时候会比较name
        System.out.println(c.contains(u2));// true

        
        //x.equals(y)--->true
    }
}

class User{
    private String name;
    public User(){}
    public User(String name){
        this.name=name;
    }

    //重写equals方法
    //这个equals方法比较原理是: 只要姓名一样就表示同一个用户。
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || !(o instanceof User)) return false;
        User u = (User) o;
        return u.name.equals(this.name);
    }

}
6.深入Collection的remove方法
package com.jmpower.javase.collection;

import java.util.ArrayList;
import java.util.Collection;

public class CollectionTest06 {
    public static void main(String[] args) {
        //创建集合对象
        Collection c=new ArrayList();
        //创建用户对象
        User u1=new User("jack");
        //加入集合
        c.add(u1);
        //remove之前的集合大小
        System.out.println(c.size());// 1

        User u2=new User("jack");
        c.remove(u2);
        //remove之后的集合大小
        System.out.println(c.size());// 0
    }
}
class User{
    private String name;
    public User(){}
    public User(String name){
        this.name=name;
    }

    //重写equals方法
    //这个equals方法比较原理是: 只要姓名一样就表示同一个用户。
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || !(o instanceof User)) return false;
        User u = (User) o;
        return u.name.equals(this.name);
    }
}
7.Collection接口中的contains方法和remove方法底层都会重写equals。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1002973.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号