集合——Collection


活动地址:CSDN21天学习挑战赛

目录

集合和数组得到区别

集合的体系

Collection集合常用API

Collection集合遍历

迭代器遍历

foreach/增强for循环

lambda表达式

Collection集合存储自定义类型的对象


集合和数组一样都是用来存储数据的容器。但是也有很大的区别。

集合和数组得到区别

1.存储空间

数组定义后类型确定,长度固定。

集合类型可以不固定,大小是可变的。

2.存储类型

数组可以存储基本类型和引用类型的数据。

集合只能存储引用数据类型的数据。

3.使用场景

数组适合做数据个数和类型确定的场景。

集合适合做数据个数不确定,且要做增删元素的场景,集合种类更多,功能更强大。

集合的体系

集合分为单列集合(collection)和双列集合(Map)。

Collection单列集合,每个元素(数据)只包含一个值。

Map双列集合,每个元素包含两个值(键值对)。

List和Set俩个接口继承Collection类

List系列集合:添加的元素是有序、可重复、有索引。

ArrayList、LinekdList :有序、可重复、有索引。

Vector:有序、可重复、线程安全、有索引

注意:LinekdList 的索引是看不到的

Set系列集合:添加的元素是无序、不重复、无索引。

HashSet: 无序、不重复、无索引;

LinkedHashSet: 有序、不重复、无索引。

TreeSet:按照大小默认升序排序、不重复、无索引。

集合都是泛型的形式,可以在编译阶段约束集合只能操作某种数据类型。

由于集合只能存储引用类型的数据,如果想要存储基本类型的数据,可以使用基本类型的包装类型。例如Int就是Integer、double就是Double

Collection集合常用API

因为List和Set俩个接口继承Collection类,使用List和set也继承了Collection的全部方法

方法名称说明
public boolean add(E e)把给定的对象添加到当前集合中
public void clear()清空集合中所有的元素
public boolean remove(E e)把给定的对象在当前集合中删除
public boolean contains(Object obj)判断当前集合中是否包含给定的对象
public boolean isEmpty()判断当前集合是否为空
public int size()返回集合中元素的个数。
public Object[] toArray()把集合中的元素,存储到数组中

Collection集合遍历

迭代器遍历

遍历就是一个一个的把容器中的元素访问一遍。

迭代器在Java中的代表是Iterator,迭代器是集合的专用的遍历方式。

foreach/增强for循环

增强for可以遍历集合也可以遍历数组。

格式:

for(元素数据类型 变量名 : 数组或者Collection集合) {

//在此处使用变量即可,该变量就是元素

}

List list = new ArrayList();
for (int i = 0; i < 10; i++) {
    list.add(i);
}
//增强for
for (Object o : list) {
    System.out.println(o);
}

lambda表达式

方法名称说明
default void forEach(Consumer<? super T> action):结合lambda遍历集合
List list = new ArrayList();
for (int i = 0; i < 10; i++) {
    list.add(i);
}
​
list.forEach(new Consumer<Integer>() {
    @Override
    public void accept(Integer i) {
        System.out.println(i);
    }
});
​
//简化
list.forEach(i->{
            System.out.println(i);
        });

Collection集合存储自定义类型的对象

集合除了存储引用类型的基本数据以外,还可以存储对象

public class Test02 {
    public static void main(String[] args) {
        List<test002> list = new ArrayList<>();
        list.add(new test002("张三"));
        list.add(new test002("李四"));
        list.add(new test002("王五"));
        for (test002 test002 : list) {
            System.out.println(test002.getName());
        }
    }
}
@Data
@AllArgsConstructor
@NoArgsConstructor
class test002{
    private String name;
}

相同的,因为new了对象需要开辟空间将数据存储到堆内存中,使用集合里面存储的是对象的地址值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值