Java面向对象系列[v1.0.0][集合]

阅读: 评论:0

Java面向对象系列[v1.0.0][集合]

Java面向对象系列[v1.0.0][集合]

Java集合就像容器,用于存储数量不等的对象(实际上存的是对象的引用),并可以实现常用的数据结构,除此之外Java集合还可以用于保存具有映射关系的关联数组。Java集合大致分为Set、List、Queue和Map四种体系,其中Set代表无需不可重复的集合;List代表有序可重复的集合;Queue代表一种队列结合;而Map代表具有映射关系的集合。

  • 所有的集合类都位于java.util包下,后来为了处理多线程环境下的并发安全问题,Java5在urrent包下提供了一些多线程支持的集合类。
  • 在Java5之前,集合会丢失容器中所有对象的数据类型,把所有对象当成Object类型处理,在Java5之后增加了泛型,集合可以记住容器中对象的数据类型
  • 集合类与数组不一样,数组元素既可以是基本类型的值,也可以是对象的引用变量,而集合类只能保存对象的引用变量
  • Java的集合类主要由两个接口派生而出:Collection和Map,他们是Java集合框架的根接口包含了一些子接口或实现类,如图所示,Set和List接口是Collection接口派生出来的的两个子接口,分别代表了无序集合和有序集合,Queue是Java提供的队列实现
  • Set集合无法记住添加这个元素的顺序,因此Set里的元素不可重复,否则找不到
  • List集合可以记住每次添加元素的顺序,且长度可变
  • 所有的Map实现类用于保存具有映射关系的数据,它保存的没想数据都是key-value对,其中key用于标识集合里的每项数据,不可重复,要获取Map中的数据时,总是根据key来获取

Collection接口

Collection接口里定义了如下操作集合元素的方法[可用于操作Set集合也可以用于操作List和Queue集合]:

  • boolean add(Object o):该方法用于向集合添加一个元素,如果集合对象被添加操作改变了则返回true
  • boolean addAll(Collection c):该方法把集合c里的所有元素添加到指定集合里,如果集合对象被添加操作改变了,则返回true
  • void clear():清除集合里的所有元素,将集合长度变为0
  • boolean contains(Object o):返回集合里是否包含指定元素
  • boolean containsAll(Collection c):返回集合里是否包含c里的所有元素
  • boolean isEmpty():返回集合是否为空,集合长度额为0时返回true,否则返回false
  • Iterator iterator():返回一个Iterator对象,用于遍历集合里的元素
  • boolean remove(Object o):删除集合中的指定元素o,当集合中包含了一个或多个元素o时,该方法只删除第一个符合条件的元素,则该方法返回true
  • boolean removeAll(Collection c):从集合中删除集合c里所包含的所有元素,相当于减掉集合c,如果删除了一个或者多个元素则返回true
  • boolean retainAll(Collection c): 从集合中删除集合c里不包含的元素,相当于取交集,如果该操作改变了调用该方法的集合,则放回true
  • int size():该方法返回集合里元素的个数
  • Object[] toArray():该方法把集合转换成一个数组,所有的集合元素变成对应的数组元素
package demo;
import java.util.*;
import static java.lang.System.*;public class CollectionTest
{public static void main(String[] args){ArrayList c = new ArrayList();// 添加元素c.add("孙悟空");// 虽然集合里不能放基本类型的值,但Java支持自动装箱c.add(6);// 输出2out.println("c集合的元素个数为:" + c.size());// 删除指定元素c.remove("6");// 输出1out.println("c集合的元素个数为:" + c.size());// 判断是否包含指定字符串// 输出trueout.println("c集合的是否包含"孙悟空"字符串:" + c.contains("孙悟空"));c.add("我欲乘风归去");out.println("c集合的元素:" + c);var books = new HashSet();books.add("我欲乘风归去");books.add("又恐琼楼玉宇");// 输出falseout.println("c集合是否完全包含books集合?" + c.containsAll(books));// 用c集合减去books集合里的元素c.removeAll(books);out.println("c集合的元素:" + c);// 删除c集合里所有元素c.clear();out.println("c集合的元素:" + c);// 控制books集合里只剩下c集合里也包含的元素ainAll(c);out.println("books集合的元素:" + books);// 该Collection使用了泛型,指定它的集合元素都是Stringvar strColl = List.of("Java", "Kotlin", "Swift", "Python");// toArray()方法参数是一个Lambda表达式,代表IntFunction对象// 此时toArray方法的返回值类型是String[],而不是Object[]String[] sa = Array(String[]::new);out.String(sa));}
}

当使用System.out.println()方法输出结合对象时,将输出[element1, element2, ]的形式,显然因为Collection实现类都重写了toString()方法,该方法可以一次性输出集合中的所有元素。

本文发布于:2024-02-04 23:26:13,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170718792460722.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:面向对象   系列   Java
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23