集合collection常用的方法和深入remove方法和contains方法

1. Collection中能存放什么元素?
没有使用“泛型”之前, Collection中可以存储object的所有子类型。
使用了“泛型”之后, Collection中只能存储某个具体的类型。
集合后期我们会学习“泛型”语法。目前先不用管。Collection中什么都能存,
只要是object的子类型就行。( 集合中不能直接存储基本数据类型,也不能存
java对象,只是存储java对象的内存地址。)
2. Collection 中的常用方法
boolean add(0bject e)向集合中添加元素
int size()获取集合中元素的个数
void clear()清空集合
boolean contains(object o)判断当前集合中是否包含元素o,包含返回true ,不包含返回false
boolean remove
boolean remove​(Object o)删除集合中的某个元素。
boolean isEmpty( )判断该集合中元素的个数是否为0
Object[] toArray()把集合转换成数组

public class CollectionTest01 {
    public static void main(String[] args) {
        //创建一个对象
        //Collection c = new Collection(); //接口无法创建对象

        //多态
        Collection collection = new ArrayList();
        //测试collection接口中的常用方法

        collection.add(100);//实际上是自动装箱,放进去的是内存地址Integer x = 100;
        collection.add(3.14);
        collection.add(new Object());
        collection.add(true);
        collection.add(new Student());

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

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

        //在向集合添加元素
        collection.add("Hello");//实际放的是内存地址,不能存放基本数据类型变量
        collection.add(1);

        //判断集合中是否包含"Hello"
        boolean f = collection.contains("Hello");
        System.out.println(f);
        boolean f1 = collection.contains(2);
        System.out.println(f1);

        //删除集合中某个元素
        collection.remove(1);

        //判断集合中是否还有1  false
        boolean f2= collection.contains(1);
        System.out.println(f2);


        //判断集合是否为空 //true 的代表空 false 代表不为空
        System.out.println(collection.isEmpty()); //false
        collection.clear();
        System.out.println(collection.isEmpty()); //true

        System.out.println("-----------------------------------------");


        //把集合转换成数组,了解使用不多
        collection.add(100);
        collection.add(3.14);
        collection.add(new Object());
        collection.add(true);
        collection.add(new Student());

        Object [] objects = collection.toArray();
        for (int i = 0 ; i < objects.length ; i ++){
            System.out.println(objects[i]);
        }

    }
}
class Student{}

深入collection中的remove和contains方法:
如果remove和contains的引用变量equls方法重写成比较内容的
如果是自定义类,eqlus方法没有重写比较的是内存地址,此方法结果相反,x引用变量就步包含在集合c里,remove方法也会返回false,集合元素为2。

public class CollectionTest03 {
    public static void main(String[] args) {
        //深入 collection 集合的 contains方法
        Collection c = new ArrayList();

        String s1 = new String("abc");
        c.add(s1);

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

        String x = new String("abc");
        //集合中元素
        System.out.println("集合中元素个数:" +c.size());
        //c集合是否包含x?为什么会包含x呢? 我们并没有把x传到集合c里
        //因为String的eqlus方法已经重写了 ,比较的是内容
        System.out.println(c.contains(x));
        //删除元素x 返回true 说明删除成功,比较的内容
        System.out.println(c.remove(x));
        System.out.println("集合中元素个数:" +c.size());
    }
}

迭代器遍历
注意:迭代器遍历的时候,如果要删除元素,要用迭代器的remove方法,这样迭代器能更新迭代器里的内容

public class CollectionTset02{
    public static void main(String[] args) {
        //创建集合对象
        Collection c = new ArrayList();//后边的集合无所谓,主要看接口collection

        //添加元素
        c.add("adb");
        c.add(123);
        c.add(1);
        c.add("Hello");
        c.add(new Object());

        //对集合collection进行遍历/迭代
        //第一步:获取集合对象的迭代器对象 Iterator
        Iterator iterator = c.iterator();

        //第二步:boolean hasNext()     next()
        while (iterator.hasNext()){//检查是否有下一个对象,如果有返回true 继续执行。
            Object object = iterator.next();//获取元素值
            iterator.remove();
            System.out.println(object);
        }
        //查看元素个数
        System.out.println(c.size());
    }
}

总结(所有的实现类):
■ArrayList: 底层是数组。
■LinkedList: 底层是双向链表。
■Vector: 底层是数组,线程安全的,效率较低,使用较少。。
■HashSet: 底层是HashMap,放到HashSet集合中的元素等同于放到HashMap集合
key部分了。
■TreeSet:底层是TreeMap,放到TreeSet 集合中的元素等同于放到TreeMap集合key
部分了。
■HashMap:底层是哈希表。。
■Hashtable: 底层也是哈希表,只不过线程安全的,效率较低,使用较少。
■Properties: 是线程安全的,并且key和value只能存储字符串String。。
■TreeMap: 底层是二叉树。TreeMap集合的key可以自动按照大小顺序排序。
List集合存储元素的特点:
有序可重复。
有序:存进去的顺序和取出的顺序相同,每- -个元素都有下标。。
可重复:存进去1,可以再存储一个1
Set集合存储元素的特点:
无序不可重复。
无序:存进去的顺序和取出的顺序不一定相同。 另外Set集合中元素没有下标。
不可重复:存进去1,不能再存储1了。
SortedSet集合存储元素特点:
首先是无序不可重复的,但是SortedSet集合中的元素是可排序的。
无序:存进去的顺序和取出的顺序不一定相同。 另外Set集合中元素没有下标。
不可重复:存进去1,不能再存储1了。
可排序:可以按照大小顺序排列。
注意
Map集合的key,就是一个Set集合。
往Set集合中放数据,实际上放到了Map集合的key部分。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值