Android开发中集合之Collection和Collections集合

news2024/12/22 17:27:40

概要

提示:Android开发中有很多时候使用到集合,今天我们就来详细的了解一下Android开发中集合的种类

Collection接口

//返回这个集合是否为空

boolean isEmpty();

//添加一个单例到集合中

boolean add(E e);

//将指定集合中的所有元素都添加到当前集合中

boolean addAll(Collection<? extends E> c);

Collection集合遍历

迭代器

// 创建迭代器对象 Iterator ite = list.iterator();

next方法获取元素

public static void main(String[] args) {
    // 创建String类型的集合
    Collection<String> list = new ArrayList<String>();
    list.add("aaa");
    list.add("bbb");
    list.add("aaa");

    // 创建迭代器对象
    Iterator ite = list.iterator();
    // 通过next取出元素
    System.out.println(ite.next()); // aaa
    System.out.println(ite.next()); // bbb
    System.out.println(ite.next()); // aaa
    // System.out.println(ite.next()); // 注意不要越界, 越界则报错
}

hasNext方法会判断当前位置是否有元素, 我们可以使用hasNext方法作为While循环的条件, 实现自动遍历元素

public static void main(String[] args) {
    // 创建String类型的集合
    Collection<String> list = new ArrayList<String>();
    list.add("aaa");
    list.add("bbb");
    list.add("aaa");

    // 创建迭代器对象
    Iterator ite = list.iterator();
  
    // hasNext作为条件
    while (ite.hasNext()) {
        System.out.println(ite.next());
    }
}
for循环遍历:
public static void main(String[] args) {
    // 创建String类型的集合
    Collection<String> list = new ArrayList<String>();
    list.add("aaa");
    list.add("bbb");
    list.add("aaa");
    // 创建int类型的数组
    int[] arr = {10, 20, 80, 40};

    // foreach遍历集合
    for (String item : list) {
        System.out.println(item);
    }
    // foreach遍历数组
    for (int item : arr) {
        System.out.println(item);
      	// item = 100; // 注意此处修改变量item的值不会影响数组的值, 该操作无意义
    }
}
Lambda遍历
  • 通过foreach方法遍历
public static void main(String[] args) {
    // 创建String类型的集合
    Collection<String> list = new ArrayList<String>();
    list.add("aaa");
    list.add("bbb");
    list.add("aaa");

    // 通过foreach方法遍历
    list.forEach(new Consumer<String>() {
        @Override
        public void accept(String s) {
            System.out.println(s);
        }
    });
}
  • 通过foreach方法结合Lambda表达式进行遍历
public static void main(String[] args) {
    // 创建String类型的集合
    Collection<String> list = new ArrayList<String>();
    list.add("aaa");
    list.add("bbb");
    list.add("aaa");

    // foreach方法结合Lambda表达式
    list.forEach(s -> System.out.println(s));
}

Collection和Collections的区别

java.util.Collection是一个集合接口(集合类的一个顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在java类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List和Set。
Collection接口的简单继承关系,如下图:

Collections则是集合类的一个工具类,其中提供了一系列静态方法,用于对集合中元素进行排序,搜索以及线程安全等各种操作。

1)排序(Sort)

Collections.sort(list)

举栗子:

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

        int array[] = {103,45,6,45,678};

        for(int i = 0 ; i <array.length; i ++) {

                list.add(array[i]);

          }

        Collections.sort(list);

        for(int i = 0 ; i<array.length;i++){

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

        }


输出结果: 6  45 45 103 678 

使用方法2:Collection.sort(list,new MyComparator(); 

可以更加强大的定义自己的比较器,定义不同的字段,比如:比较不同品牌汽车的价格,销量,油耗等,可以直接使用此方法进行比较。具体的使用可以参考下这篇文章 Java中Collections详解

2)交换(Swap)

使用方法: Collections.swap()

举栗子:

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

    int array[] = {1,2,3,4,5,6,7,8};

   for(int i = 0 ; i <array.length; i ++) {

                list.add(array[i]);

          }

    Collections.swap(list,0,1);

            参数解析 

list-- 在该列表中的调剂元素。

i-- 要交换的一个元素的索引。

j-- 要交换的其它元素的索引。

    for(int i =0; i<array.length;i++){

                println(list.get[i]);

        }

输出结果:2 1 3 4 5 6 7 8

3)反转(Reverse)

使用方法: Collections.reverse()

举栗子:

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

    int array[] = {1,2,3,4,5,6,7,8};

   for(int i = 0 ; i <array.length; i ++) {

                list.add(array[i]);

          }

    Collections.reverse(list);

    for(int i =0; i<array.length;i++){

                println(list.get[i]);

        }

输出结果:8 7 6 5 4 3 2 1

4)混排(Shuffling)

使用方法: Collections.reverse()

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

    int array[] = {1,2,3,4,5,6,7,8};

   for(int i = 0 ; i <array.length; i ++) {

                list.add(array[i]);

          }

    Collections.reverse(list);

    for(int i =0; i<array.length;i++){

                println(list.get[i]);

        }

5)替换所有的元素(Fill)

使用方法: Collections.fill()

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

    int array[] = {1,2,3,4,5,6,7,8};

   for(int i = 0 ; i <array.length; i ++) {

                list.add(array[i]);

          }

    Collections.fill(list,11);

    for(int i =0; i<array.length;i++){

                println(list.get[i]);

        }

6)拷贝(Copy)

使用方法: Collections.copy()

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

    List<Integer> list2 = new ArrayList<Integer>();

    int array[] = {1,2,3,4,5,6,7,8};

   for(int i = 0 ; i <array.length; i ++) {

                list.add(array[i]);

          }

    Collections.copy(list,list2);

    for(int i =0; i<array.length;i++){

                println(list2.get[i]);

        }

7)返回Collections中最小的元素(min)

collections.min(list);

8)返回Collection中的最大元素(max)

collection.max(list);

9)lastIndexOfSubList

int count = Collection.lastIndexOfSubList(list,li);

10)IndexOfSubList

int count= Collections.indexOfSubList(list,li);

11)Rotate

Collections.rotate(list,-1);
 

小结

本篇文章主要讲解了Collection集合。相信通过上面的介绍大家应该对Collections有了详细的了解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1222108.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

本周Github有趣项目:draw-a-ui等

有趣的项目、工具和库 gpt-crawler 抓取网站以生成知识文件&#xff0c;从而从 URL 创建您自己的自定义 GPT。 需要步骤&#xff1a; 配置运行爬虫、 将您的数据上传到 OpenAI&#xff1a;使用此选项通过 UI 访问您生成的知识&#xff0c;您可以轻松与他人共享 创建自定义助…

nginx学习(1)

一、下载安装NGINX&#xff1a; 先安装gcc-c编译器 yum install gcc-c yum install -y openssl openssl-devel&#xff08;1&#xff09;下载pcre-8.3.7.tar.gz 直接访问&#xff1a;http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz&#xff0c;就…

Unity中Shader纹理的过滤

文章目录 前言一、为什么要过滤&#xff1f;二、过滤方式1、Point(no filter) 无过滤2、Bilinear 双线性过滤3、Trilinear 三线性过滤 前言 Unity中Shader纹理的过滤 一、为什么要过滤&#xff1f; 事实上没有一个纹理上的纹素是与屏幕上的像素是一一对应的。 屏幕上的 一个…

【算法】距离(最近公共祖先节点)

题目 给出 n 个点的一棵树&#xff0c;多次询问两点之间的最短距离。 注意&#xff1a; 边是无向的。所有节点的编号是 1,2,…,n。 输入格式 第一行为两个整数 n 和 m。n 表示点数&#xff0c;m 表示询问次数&#xff1b; 下来 n−1 行&#xff0c;每行三个整数 x,y,k&am…

图数据库Neo4J 中文分词查询及全文检索(建立全文索引)

Neo4j的全文索引是基于Lucene实现的&#xff0c;但是Lucene默认情况下只提供了基于英文的分词器&#xff0c;下篇文章我们在讨论中文分词器&#xff08;IK&#xff09;的引用&#xff0c;本篇默认基于英文分词来做。我们前边文章就举例说明过&#xff0c;比如我要搜索苹果公司&…

【计算机网络笔记】ICMP(互联网控制报文协议)

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

利用自动化和条形码优化SAP制造供应链

背景 Welch Allyn 是全球领先的医疗诊断设备制造商&#xff0c;开发了数百种突破性产品和技术&#xff0c;使一线从业者能够提供卓越的患者护理。它拥有近 2,500 名员工&#xff0c;在 26 个不同的国家/地区工作。 挑战 提高运营效率 原因&#xff1a;用户需要长途跋涉并完成多…

C++单调向量算法:132 模式解法三枚举1

本题不同解法 包括题目及代码C二分查找算法&#xff1a;132 模式解法一枚举3C二分查找算法&#xff1a;132 模式解法二枚举2代码最简洁C二分查找算法&#xff1a;132 模式解法三枚举1性能最佳C单调向量算法&#xff1a;132 模式解法三枚举1 分析 时间复杂度 2轮循环时间复杂…

learning to rank 学习排名系统综述

Learning to Rank 的实践 文档列表方法 Listwise 算法相对于 Pointwise 和 Pairwise 方法来说&#xff0c;它不再将排序问题转化为一个分类问题或者回归问题&#xff0c;而是直接针对评价指标对文档的排序结果进行优化&#xff0c;如常用的 MAP、NDCG 等。应用 Listwise 的模型…

计算数组中每个元素的立方根numpy.cbrt()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 计算数组中每个元素的立方根 numpy.cbrt() [太阳]选择题 请问以下代码中执行语句输出结果是&#xff1f; import numpy as np a np.array([1, 8, 27]) print("【显示】a ",a) pr…

面试题-3

1.说一下原型链 原型就是一个普通对象,它是为构造函数实例共享属性和方法&#xff0c;所有实例中引用原型都是同一个对象 使用prototype可以把方法挂载在原型上&#xff0c;内存值保存一致 _proto_可以理解为指针,实例对象中的属性,指向了构造函数的原型(prototype) 2.new操…

魔众文库系统 v5.6.0 DWG文件格式支持,部分数据封面显示异常,定时调度清理临时文件

魔众文库系统基于文档系统知识&#xff0c;建立平台与领域&#xff0c;打造流量、用户、付费和变现的闭环&#xff0c;帮助您更好的搭建文库系统。 魔众文库系统发布v5.6.0版本&#xff0c;新功能和Bug修复累计17项&#xff0c;DWG文件格式支持&#xff0c;部分数据封面显示异…

SpringBoot-集成Kafka详解

SpringBoot集成Kafka 1、构建项目 1.1、引入依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.5.RELEASE</version> </parent> <dependenci…

DevExpress中文教程 - 如何在macOS和Linux (CTP)上创建、修改报表(上)

DevExpress Reporting是.NET Framework下功能完善的报表平台&#xff0c;它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集&#xff0c;包括数据透视表、图表&#xff0c;因此您可以构建无与伦比、信息清晰的报表。 DevExpress Reports — 跨平台报表组件&#x…

AnimateDiff搭配Stable diffution制作AI视频

话不多说&#xff0c;先看视频 1. AnimateDiff的技术原理 AnimateDiff可以搭配扩散模型算法&#xff08;Stable Diffusion&#xff09;来生成高质量的动态视频&#xff0c;其中动态模型&#xff08;Motion Models&#xff09;用来实时跟踪人物的动作以及画面的改变。我们使用 …

[ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧

文章目录 一、Amazon CodeWhisperer 简介1.1 CodeWhisperer 是什么1.2 Amazon CodeWhisperer 是如何工作的 二、Amazon CodeWhisperer 的优势和功能2.1 Amazon CodeWhisperer 的优势2.2 Amazon CodeWhisperer 的代码功能 三、Amazon CodeWhisperer 安装3.1 安装到 IntelliJ IDE…

〖大前端 - 基础入门三大核心之JS篇㊱〗- JavaScript 的DOM节点操作

说明&#xff1a;该文属于 大前端全栈架构白宝书专栏&#xff0c;目前阶段免费&#xff0c;如需要项目实战或者是体系化资源&#xff0c;文末名片加V&#xff01;作者&#xff1a;不渴望力量的哈士奇(哈哥)&#xff0c;十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…

股票魔法师第二阶段趋势模板选股公式,寻找上涨趋势

对于股票运行的阶段&#xff0c;不同的股票分析方法有着不同的划分方式。从传统的主力运作分析&#xff0c;可以分为吸筹、洗盘、试盘、拉升、出货五个阶段。在波浪理论中&#xff0c;一个完整的上升或下降周期包含8浪&#xff08;其中5浪是主浪、3浪是调整浪&#xff09;。在缠…

Gdevops北京站 2023年全球敏捷运维峰会-核心PPT资料下载

一、峰会简介 2023 Gdevops全球敏捷运维峰会-北京站成功举办&#xff0c;一众产学研界技术大佬与新锐专家&#xff0c;以智能为主线&#xff0c;就数据库、运维、架构、金融科技等领域进行了前沿技术与实践经验交流&#xff0c;一同畅聊AIGC、云原生、数智化转型下的新机遇。 …

【LeetCode刷题-滑动窗口】--159.至多包含两个不同字符的最长子串

159.至多包含两个不同字符的最长子串 方法&#xff1a;滑动窗口 定义两个指针left和right作为窗口的边界&#xff0c;将两个指针都设定在位置0&#xff0c;然后向右移动right指针&#xff0c;直到窗口内不超过两个不同的字符&#xff0c;如果某一点我们得到了3个不同的字符&am…