java集合框架Collection(一)

简介: java集合框架Collection

java集合框架

java.util.Collection接口

Collection接口中定义了所有集合都要具备的功能,它也是所有集合的顶级接口。

Collection下面有几种不同集合的分类,常见的两个:

1.java.util.List:List接口表示的是线性表,是有序的且可以存放重复元素的集合 *

2.java.util.Set:Set接口表示的是不可重复的集合

这里指的重复是元素是否可以重复,而判断重复的标准是根据元素自身equals比较。

public static void main(String[] args) {
  Collection c = new ArrayList();
  /*
   * boolean add(E e)
   * 向当前集合中添加给定元素,成功添加后返回true
   */
  c.add("one");
  c.add("two");
  c.add("three");
  c.add("four");
  c.add("five");
  System.out.println(c);
  /*
   * int size()
   * 返回当前集合的元素个数
   */
  int size = c.size();
  System.out.println("size:"+size);
  /*
   * boolean isEmpty()
   * 判断当前集合是否为空集
   */
  boolean isEmpty = c.isEmpty();
  System.out.println("isEmpty:"+isEmpty);
  /*
   * void clear()
   * 清空集合
   */
  c.clear();
  System.out.println(c);
  System.out.println("size:"+c.size());
  System.out.println("isEmpty:"+c.isEmpty());
  }


boolean contains(E e)


判断当前集合是否包含给定元素,是否包含的依据是是否

与集合现有元素存在equals比较 为true的情况。

public static void main(String[] args) {
  Collection c = new ArrayList();
  c.add(new Point(1,2));
  c.add(new Point(3,4));
  c.add(new Point(5,6));
  c.add(new Point(7,8));
  System.out.println(c);
  Point p = new Point(1,2);
  boolean contains = c.contains(p);
  System.out.println("包含:"+contains);
  /*
   * 删除元素也是依靠元素equals比较进行删除的,如果集合有重复元素则
   * 只删除一次。
   */
  c.remove(p);
  System.out.println(c);
  }


集合只能放引用类型元素,并且存放的也是元素的引用(地址)


public static void main(String[] args) {
  Collection c = new ArrayList();
  Point p = new Point(1,2);
  c.add(p);
  System.out.println("p:"+p);
  System.out.println("c:"+c);
  p.setX(2);
  System.out.println("p:"+p);
  System.out.println("c:"+c);
  }

运行结果为

image.png


public static void main(String[] args) {
    Collection<String> c1 = new ArrayList<>();
//    Collection c1 = new HashSet();//HashSet是由HashMap实现的
    c1.add("java");
    c1.add("c++");
    c1.add(".net");
    System.out.println("c1:"+c1);
    Collection<String> c2 = new ArrayList<>();
    c2.add("ios");
    c2.add("android");
    c2.add("java");
    System.out.println("c2:"+c2);
    /*
     * addAll方法是取并集操作,会将给定集合中的所有元素添加到当前集合中。
     * 如果当前集合是Set集合,重复元素不能被再次添加进集合。
     */
    c1.addAll(c2);
    System.out.println("c1:"+c1);
    Collection<String> c3 = new ArrayList<>();
    c3.add("c++");
    c3.add("android");
    c3.add("php");
    System.out.println("c3:"+c3);
    /*
     * containsAll用于判断当前集合是否包含给定集合中的所有元素
     */
    boolean contains = c1.containsAll(c3);
    System.out.println("全包含:"+contains);
    /*
     * removeAll用于删除当前集合中与给定集合的共有元素。给定集合中的元素
     * 不受影响。
     */
    c1.removeAll(c3);
    System.out.println("c1:"+c1);
    System.out.println("c3:"+c3);
  }



遍历集合


Iterator iterator


该方法可以获取一个用于遍历当前集合元素的迭代器


java.util.Iterator接口,迭代器接口

迭代器接口规定了使用迭代器方式办理集合的相关操作,不同的集合都提供了对应的 实现类,我们无需记住这些具体实现类的名字,只要当作是Iterator看即可(多态),然后根据定义的相关操作遍历即可。


迭代器遍历集合遵循的原则是:问,取,删

其中删除元素不是必要操作。

public static void main(String[] args) {
    Collection<String> c = new ArrayList<>();
    c.add("one");
    c.add("#");
    c.add("two");
    c.add("#");
    c.add("three");
    c.add("#");
    c.add("four");
    c.add("#");
    c.add("five");
    System.out.println(c);
    @SuppressWarnings("rawtypes")
    Iterator it = c.iterator();
    /*
     * boolean hasNext()
     * 通过迭代器判断集合是否还有下一个元素可以遍历
     */
    while(it.hasNext()) {
      /*
       * E next()
       * 通过迭代器遍历集合下一个元素
       */
      String str =(String)it.next();
      if("#".equals(str)) {
        //迭代器要求在遍历的过程中不得通过集合方法增删元素,否则抛异常
//        c.remove(str);
        //迭代器的remove方法可以将本次next()遍历的元素从集合中删除
        it.remove();
      }
      System.out.println(str);
    }
    System.out.println(c);
  }



结果如下

image.png

目录
相关文章
|
1月前
|
Java 大数据 API
Java Stream API:现代集合处理与函数式编程
Java Stream API:现代集合处理与函数式编程
198 100
|
1月前
|
Java API 数据处理
Java Stream API:现代集合处理新方式
Java Stream API:现代集合处理新方式
217 101
|
1月前
|
人工智能 Java 开发者
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
JManus是阿里开源的Java版OpenManus,基于Spring AI Alibaba框架,助力Java开发者便捷应用AI技术。支持多Agent框架、网页配置、MCP协议及PLAN-ACT模式,可集成多模型,适配阿里云百炼平台与本地ollama。提供Docker与源码部署方式,具备无限上下文处理能力,适用于复杂AI场景。当前仍在完善模型配置等功能,欢迎参与开源共建。
1065 58
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
|
1月前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
14天前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
15天前
|
存储 安全 Java
《数据之美》:Java集合框架全景解析
Java集合框架是数据管理的核心工具,涵盖List、Set、Map等体系,提供丰富接口与实现类,支持高效的数据操作与算法处理。
|
23天前
|
消息中间件 缓存 Java
Spring框架优化:提高Java应用的性能与适应性
以上方法均旨在综合考虑Java Spring 应该程序设计原则, 数据库交互, 编码实践和系统架构布局等多角度因素, 旨在达到高效稳定运转目标同时也易于未来扩展.
85 8
|
23天前
|
存储 算法 安全
Java集合框架:理解类型多样性与限制
总之,在 Java 题材中正确地应对多样化与约束条件要求开发人员深入理解面向对象原则、范式编程思想以及JVM工作机理等核心知识点。通过精心设计与周密规划能够有效地利用 Java 高级特征打造出既健壮又灵活易维护系统软件产品。
53 7
|
1月前
|
存储 Java Go
对比Java学习Go——函数、集合和OOP
Go语言的函数支持声明与调用,具备多返回值、命名返回值等特性,结合`func`关键字与类型后置语法,使函数定义简洁直观。函数可作为一等公民传递、赋值或作为参数,支持匿名函数与闭包。Go通过组合与接口实现面向对象编程,结构体定义数据,方法定义行为,接口实现多态,体现了Go语言的简洁与高效设计。
|
1月前
|
SQL Java 数据库连接
区分iBatis与MyBatis:两个Java数据库框架的比较
总结起来:虽然从技术角度看,iBATIS已经停止更新但仍然可用;然而考虑到长期项目健康度及未来可能需求变化情况下MYBATISS无疑会是一个更佳选择因其具备良好生命周期管理机制同时也因为社区力量背书确保问题修复新特征添加速度快捷有效.
126 12
下一篇
开通oss服务