浅浅说下Collection集合

自己在学习Java中,目前只学到了Collection集合的皮毛,来到这儿总结一番。废话不多说,入题吧!

在了解Collection集合之前,我们最好先知晓它的前世今生以及子孙后代们。
1.Collection集合全称是单列集合类的根接口。我在这儿一直喊他叫集合,就说明它是一种容器,用于存放一系列符合规格的某些元素。它有两个重要的子接口,分别是 java.util.List 和 java.util.Set 。其中, List 的特点是元素有序、元素可重复。 Set 的特点是元素无 序,而且不可重复。 List 接口的主要实现类有 java.util.ArrayList 和 java.util.LinkedList , Set 接口 的主要实现类有 java.util.HashSet 和 java.util.TreeSet 。而在这个家族中。Collection、List、Set是接口,其余的是类。多提一句,集合本身是一个工具,他们都存放在java.util包中,所以使用时需要导包。

Collection的使用方法

Collection是所有的单列集合类的父接口,所以它的使用方法可以继承到List 和 Set中。下面我就列出它的常用方法。

1.public boolean add(E e): 将给定的对象添加到集合中。返回值是一个boolean类型值 ,成功了是true,失败了是false。因为Collection集合中存放的元素是可重复的,所以可以说是存放元素只要符合条件,基本就是成功的,我们很少使用到(或我还没接触到)需要它的返回值的情况。
2. public boolean remove(E e):将指定元素删除。
3. public void clear(): 这个老牛逼了,清空整个集合,但是集合本身(容器)不会被删掉。
4. public int size():返回集合中元素的个数。
5. public boolean contains(E e):判断集合中是否包含有指定元素。对比起以前的数组,这个功能简直不要太给力了。
6.public boolean isEmpty():判断该集合是否为空,就是是否含有元素。
7.public Object[] toArray():将集合中的元素存放到数组中。因为数组中存放的数据类型是一致的,所以方法中使用的是Object来接受。需要注意的是,因为数组长度不可更改,所以更改成数组后,以及数组转成集合后,里面所包含的元素也就不可以增删了啊,只可以替代覆盖哦。
以下作为演示:

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

public class demo01_Collection集合 {
public static void main( String[] args ) {
    //  ArrayList 是Collection接口的子类,
    //所以在这里通过新建一个ArrayList对象来调用父接口
    Collection<String> col = new ArrayList<>();
        //add方法 将元素添加到集合中去
    col.add("三叉戟");
    col.add("都神剑");
    col.add("狂魔镰");
    col.add("刑天斧");
    col.add("虚空杖");  
     //咳咳,最近回归了大乐斗,前几天学了对象和接口,想着整个大乐斗单机版,所以有点儿着迷了
    System.out.println(col);
        //remov方法     删除集合中的目标元素,集合中没有该元素不会报错
    col.remove("刑天斧");
    System.out.println(col);

    //contains方法  判断目标是否在集合中,返回值是boolean类型
    col.contains("刑天斧");
    //  isEmpty  方法,判断集合中是否为空,返回值是boolean类型
    col.isEmpty();
    //size   返回集合中元素的个数,返回值是int类型
    int size = col.size();
    //  toArray  方法,将集合返回到数组去
    String[] arr = new String[5];
    col.toArray(arr);
    for (int i = 0; i < arr.length; i++) {
        System.out.print(arr[i]+"  ");
    }
    //clean 方法,将整个集合中的所有元素清楚,但是集合本身依然保留!
    col.clear();
    System.out.println(col);

}

}

Collection集合的遍历

既然学到了一个集合,学会了它的使用方式,怎么会缺的了它的遍历呢?在JDK中提供了一个温馨贴切的Iterator接口: java.util.Iterator(导包加1) 这个接口是用来遍历Collection集合的,它有个名称叫做迭代器。而作为遍历一个Collection集合的迭代器,也是有以下几个步骤的。
一:生成对应集合的迭代器。
二:判断集合中是否有下一个元素。
三:有的话,则将元素取出来。
示例代码:

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

public class demo01_Iterator迭代器 {
    public static void main( String[] args ) {
        //创建集合
        Collection<String> coll = new ArrayList<>();    //collection是一个抽象父接口,所以只好通过引用子类来实现了

        coll.add("旺仔牛奶");
        coll.add("AD钙奶");
        coll.add("旺旺奶糖");
        coll.add("好丽友");
        coll.add("抹茶小饼干");
        coll.add("好时巧克力");

        //  创建集合对应的迭代器
        Iterator<String>  diedaiqi= coll.iterator();
//进行判断,是否有下一个元素,有的话才能执行拿取操作
        while(diedaiqi.hasNext()){
            String s = diedaiqi.next();
            System.out.println(s);
        }
    }
}

迭代器的使用注意

因为迭代器的判断是如果有下一个,再拿取。所以迭代器在进行迭代自定义对象时容易出问题。详情可以参看它的原理:
迭代器是有指针的,当判断有一个元素时,进行拿取后,指针就会下移。如果你的自定义对象有多个属性时,就容易获取到下一个元素的某一属性了。表达能力有限,用代码表示。
新建的Person类

    public class Person {
        private String name;
        private int age;
        //构造空参
    public Person( ) {

    }
//构造有参
    public Person( String name, int age ) {
        this.name = name;
        this.age = age;
    }
//各属性的 get/set 方法
    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;
    }
}

测试类:

package demo02_Iterator迭代器;

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

public class demo02_Iterator的使用注意 {
    public static void main( String[] args ) {
        Person p1 = new Person("张三",23);
        Person p2 = new Person("李四",24);
        Person p3 = new Person("王五",25);
        Person p4 = new Person("赵六",26);

        //新建Collection集合
        Collection<Person> coll = new ArrayList<>();
        coll.add(p1);
        coll.add(p2);
        coll.add(p3);
        coll.add(p4);

        //创建对应的迭代器
       /* Iterator<Person> it = coll.iterator();
        //进行判断
        while(it.hasNext()){
            System.out.println("名字:"+it.next().getName()+"年龄:"+it.next().getAge());
            //输出 名字:张三年龄:24
            //     名字:王五年龄:26
        }*/

       //修正版
        Iterator<Person> it = coll.iterator();
        while(it.hasNext()){
            Person p =it.next();
            System.out.println("名字:"+p.getName()+"--"+"年龄:"+p.getAge());
        }
    }
}

在测试类中的第一次输出,大家会发现张三的年龄不是23了,而是24,并且跳过了李四等。这就是迭代器使用时需要注意的事项,可以多一步,给每个迭代对象起个名,再用自定义类的对象去调用迭代器的next()方法就可以了。详情请看代码中的修改部分

以上就是我对Collection集合的一个简单理解,当然Collection集合绝不止这么点内容,有空我会再说说List集合和Set集合。将这两个集合以及他们的子类讲解了,才算是大概的讲完了这个集合一家的故事。




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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值