java ->集合

集合介绍

集合,集合是java中提供的一种容器,可以用来存储多个数据。

在前面的学习中,我们知道数据多了,可以使用数组存放或者使用ArrayList集合进行存放数据。那么,集合和数组既然都是容器,它们有啥区别呢?

数组的长度是固定的。集合的长度是可变的。集合中存储的元素必须是引用类型数据

ArrayList集合存储元素

我们来回顾下,使用ArrayList集合存储元素并遍历的过程。

 

练习一:ArrayList集合存储5个int类型元素

public static void main(String[] args) {

ArrayList<Integer> list = new ArrayList<Integer>();

    list.add(111);

    list.add(222);

    list.add(333);

    list.add(444);

    list.add(555);

    for(int i=0; i<list.size(); i++){

System.out.println(list.get(i));

}

}

练习二:ArrayList集合存储5个Person类型元素

public static void main(String[] args) {

ArrayList<Person> list = new ArrayList<Person>();

    list.add(new Person("小强"));

    list.add(new Person("老王"));

    list.add(new Person("小虎"));

    list.add(new Person("小泽"));

    list.add(new Person("小红"));

    for(int i=0; i<list.size(); i++){

        Person p = list.get(i);

System.out.println(p);

}

}

集合的继承实现关系

查看ArrayList类发现它继承了抽象类AbstractList同时实现接口List(有序),而List接口又继承了Collection接口。Collection接口为最顶层集合接口了。 采集,聚集

源代码:

interface List extends Collection {

}

public class ArrayList extends AbstractList implements List{

}

这说明我们在使用ArrayList类时,该类已经把所有抽象方法进行了重写。那么,实现Collection接口的所有子类都会进行方法重写。

 

 

Collection接口常用的子接口有:List接口、Set接口

 

List接口常用的子类有:ArrayList类、LinkedList类

 

Set接口常用的子类有:HashSet类、LinkedHashSet类

 

Set无序 List 有序

Collection接口概述

既然Collection接口是集合中的顶层接口,那么它中定义的所有功能子类都可以使用。查阅API中描述的Collection接口。Collection 层次结构中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。

继续查阅API,发现Collection接口中很多集合的操作方法,那么这些方法都具体能做什么呢?

Collection接口的基本方法

这里我们不关心具体创建的Collection中的那个子类对象,这里重点演示的是Collection接口中的方法。

创建集合的格式:

方式1:Collection<元素类型> 变量名 = new ArrayList<元素类型>();

方式2:Collection 变量名 = new ArrayList();

方式1创建的集合,只能存储<>中指定的元素类型,该方式为常用方式

 

方式2创建的集合,集合的元素类型默认为Object类型,即任何类型的元素都可以存储。

 

演示Collection接口中的方法

//创建集合

Collection coll = new ArrayList();

//1,往集合中添加对象元素。add(E e)方法,E代表创建集合时所指定的数据类型如<String>,那么,E就代表String类型;创建集合时若没有指定数据类型,那么,E就代表Object类型。

coll.add("abc");

coll.add("ef");

coll.add("g");        

//把集合打印一下。

System.out.println(coll); //打印结果为:[abc, ef, g]

System.out.println(coll.toString()); //打印结果为:[abc, ef, g]

//2,从集合中删除元素remove(Object o)方法

coll.remove("ef");        

//删除后,集合元素为[abc, g]

//3,判断集合中是否包含指定元素contains(Object o)方法(在List集合中依据equals方法,在Set集合中依据hashcode()与equals()方法)

System.out.println(coll.contains("abc"));

//打印结果为true

System.out.println(coll.contains("ef"));

//打印结果为false

    

//4,获取集合元素个数size()方法

System.out.println(coll.size());

//打印结果为2

 

//5,返回包含集合中所有元素的数组toArray()方法

String[] array = coll.toArray();

//数组中的元素为{"abc", "g"}

//6,清除集合元素。remove()方法

coll.clear();清空的是内容

//清空后,集合元素为[],代表没有元素

原文地址:https://www.cnblogs.com/miaoxingren/p/9411305.html