JAVA单列集合

时间:2024-10-25 14:46:59

c4ade6464411419aa84bae42fdb3613c.jpg

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

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

Collection

Collection是单列集合的接口,它的功能是全部单列集合都可以继承使用的

public boolean add(E e)        把给定的对象添加到当前集合中
public void clear()        清空集合中所有的元素
public boolean remove(E e)        把给定的对象在当前集合中删除
public boolean contains(bject obj)        判断当前集合中是否包含给定的对象
public boolean isEmpty()        判断当前集合是否为空
public int size()        返回集合中元素的个数/集合的长度

Collection是一个接口,我们不能直接创建他的对象。所以,现在我们学习他的方法时,只能创建他实现类的对象。
下面用多态的方式创建对象,这是为了学习Collection接口里的方法

add:把给定的对象添加到当前集合中

5c81e3d7db6949d29a7fb4865a97d6db.png

94206abab92b4a6cbeece5c82c653800.png

如果我们要往List系列集合中添加数据,那么方法永远返回true,因为List系列的是允许元素重复的。
如果我们要往Set系列集合中添加数据,如果当前要添加元素不存在,方法返回true,表示添加成功。如果当前要添加的元素已经存在,方法返回false,表示添加失败。因为Set系列的集合不允许重复。

clear:清空集合中所有的元素

67a6ef3968204a5e9747ec9ad6fa5a5f.png0966331c088f4944aff34b3e5e8d7275.png

remove(E e)        把给定的对象在当前集合中删除

95e60024955a48b9bd39fc5ed773ba66.png32ec8e1eed1c4f44af266e4204563cdb.png

因为Collection里面定义的是共性的方法,所以此时不能通过索引进行删除。只能通过元素的对象进行删除。方法会有一个布尔类型的返回值,删除成功返回true,删除失败返回false。如果要删除的元素不存在,就会删除失败。

contains(bject obj)        判断当前集合中是否包含给定的对象

2f6fbfc6981145c689ca666e61e34b8c.pngd6621a79c8c1461db3f3531f3038041d.png

e0a31b90414c40308df8cc0810440788.png

272aa4b46f98434e83c9cf2ee6560d62.png

contains底层是依赖equals方法进行判断是否存在的。

b3d306087a5c4e7b8b0859183489bdb3.png所以,如果集合中存储的是自定义对象(例如自己定义的Student类,teacher类),也想通过contains方法来判断是否包含,那么在javabean类中,一定要重写equals方法。 

isEmpty()        判断当前集合是否为空

2e9ea2604f21431aa8d8728bbf946394.png

c623d22fafa4401d8a09fda9e62d60d7.png

size()        返回集合中元素的个数/集合的长度

a9dadfb28ccb4115b771f3eeb82023bf.png977bba15ebb04447bce8e99774b75e48.png

Collection遍历方式

迭代器遍历

迭代器在Java中的类是lterator,迭代器是集合专用的遍历方式

Collection集合获取迭代器

Iterator<E> iterator()     返回迭代器对象,默认指向当前集合的0索引

lterator中的常用方法 

boolean hasNext()        判断当前位置是否有元素,有元素返回true,没有元素返回false
E next()        获取当前位置的元素,并将迭代器对象移向下一个位置。

0bed0597b8d14d93be5b4ad7f350e9f0.png9f07181b4efb4b4dbde38c9f5526b1fe.png

迭代器遍历完毕,指针不会复位

34eed5aeca684dc4841723902040cf72.pngb63632407a874a238161a76792b0cb81.png如果我们要继续第二次遍历集合,只能再次获取一个新的迭代器对象

增强for遍历

增强for的底层就是迭代器,为了简化迭代器的代码书写的。
它是IDK5之后出现的,其内部原理就是一个iterator迭代器
所有的单列集合和数组才能用增强for进行遍历

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

 

}

44eb98b0845640dea9abca9eff8b84cd.png c368c8a9817a4f4aa4b21c4e86fa2497.png

修改增强for中的变量,不会改变集合中原本的数据。

1b0f4a9cb7484690b09d502cad9ef77d.png

80e407d460ff420dbff9c39ab578ca29.png

Lambda表达式遍历

得益于]DK8开始的新技术Lambda表达式,提供了一种更简单、更直接的遍历集合的方式。

5ac1ea5a99144542a3a4333bf64543da.png

26c2041d92494752985eb7db8bf862aa.png