活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 一键部署Llama3大模型学习机 0代码一键部署,预装最新主流大模型Llama3与StableDiffusion
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 产品能力
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      Java基础(Arrays工具类)(asList()方法)(详细)

      首页 知识中心 软件开发 文章详情页

      Java基础(Arrays工具类)(asList()方法)(详细)

      2025-05-09 08:50:35 阅读次数:1

      Arrays,int,列表,排序,数组,方法

       

      一、Arrays工具类

      (1)引言
      • 实际的开发中,经常需要按某些特定条件对容器或者数组进行查找、替换、排序、反转甚至是打乱等操作。直接编写代码实现可以,但是会增加工作量,且性能不能得到保证。
      • 应对这种情况,而Java集合提供了两个工具类"Collections"、"Arrays"。其中这两个类提供了很多的静态方法。提供"类名.方法"完成操作即可。
      (2)基本介绍
      • Arrays工具类是Java中的一个非常实用的工具类,它位于java.util包下。专门用于对数组进行各种操作。由于数组本身是一个固定长度的数据结构,且提供的方法有限,Arrays工具类通过提供一系列的静态方法,极大地扩展了数组的功能。
      (3)主要功能(提供的方法)
      (I)排序(Arrays.sort())
      • Arrays.sort(T[] a)。此方法对数组a中的所有元素进行升序排序。这里的T代表数组元素的类型,且该类型必须实现了Comparable接口。自然排序(从小到大)就是根据元素类型的自然顺序(即compareTo方法定义的顺序)进行排序。
      • 工具类"Arrays"还提供了多个重载的sort()方法。也就是既可以自然排序,也可以通过传入比较器参数按照自定义的规则排序。
      • Arrays.sort(T[] a, Comparator<? super T> c)。此方法允许用户传入一个自定义的Comparator来实现排序。Comparator是一个函数式接口,它包含了一个compare方法,用于比较两个对象。通过实现这个compare()方法,用户可以定义自己的排序规则。如果compare方法返回负数,则表示第一个参数应该排在第二个参数之前;如果返回正数,则表示第一个参数应该排在第二个参数之后;如果返回0,则表示两个参数相等
      (II)搜索(查找)(Arrays.binarySearch())
      • Arrays.binarySearch(Object[] a, Object key)。使用二分查找算法在已排序的数组中查找特定元素。如果找到该元素,则返回其索引;如果未找到,则返回-(插入点) - 1。注意,使用此方法前必须确保数组已经排序。
      (III)打印和转换(Arrays.toString()、Arrays.asList())
      • Arrays.toString(Object[] a)。返回数组内容的字符串表示形式,这对于打印数组或将其转换为字符串表示非常有用。打印的输出结果结构清晰,如下。
      import java.util.Arrays;  
        
      public class Main {  
          public static void main(String[] args) {  
              Integer[] numbers = {1, 2, 3, 4, 5};  
              String arrayString = Arrays.toString(numbers);  
              System.out.println(arrayString); // 输出:[1, 2, 3, 4, 5]  
        
              String[] strings = {"Hello", "World", "Java"};  
              String stringArrayString = Arrays.toString(strings);  
              System.out.println(stringArrayString); // 输出:[Hello, World, Java]  
          }  
      }
      • 除了Object[]类型的数组,Arrays.toString()方法还有其他重载版本,可以处理基本类型数组(如 int[]、double[] 等),这些重载版本内部会将基本类型数组转换为对应的包装类型数组(如 Integer[]、Double[]),然后调用 Object[] 版本的 toString() 方法。
      • Arrays.asList(T... a)。将数组转换为列表(List<T>)。但需要注意的是,这个方法返回的列表是固定大小的,它不支持add和remove等修改列表大小的操作。
      (IIII)复制(Arrays.copyOfRange())
      • Arrays.copyOf(T[] original, int newLength)。复制数组,返回一个新数组,其长度为newLength。如果newLength大于原数组的长度,则新数组其余部分将用null(对于对象数组)或0(对于基本类型数组)填充。
      • Arrays.copyOfRange(T[] original, int from, int to)。复制指定范围的数组,返回一个新数组,包含从from(包含)到to(不包含)的元素。
      (IIIII)填充(替换)(Arrays.fill())
      • 在程序开发中,有时需要将一个数组中的所有元素替换成同一个元素。此时就可以用这个fill()方法,该方法可以将指定的值赋给数组中的每一个元素。
      • Arrays.fill(Object[] a, Object val)。用指定的值填充整个数组。
      • Arrays.fill(Object[] a, int fromIndex, int toIndex, Object val)。用指定的值填充数组的一部分,从fromIndex(包含)到toIndex(不包含)

      二、asList()方法

      (1)基本介绍
      • asList()是Java中 java.util.Arrays 类的一个静态方法,它属于 Arrays 工具类中的方法。
      • 这个方法的作用是将一个数组(无论是对象数组还是基本类型数组的包装类数组)转换成一个固定大小的列表(List)
      • 但是,返回的列表是由原始数组支持的,这意呀着列表是非同步的。并且它的大小是固定的,即列表的大小不会随着原始数组的变化而变化。
      (2)功能介绍
      (I)返回的列表大小固定。
      • 通过asList()方法获得的列表是固定大小的,不支持添加(add)或删除(remove)元素操作。尝试进行这些操作会抛出 UnsupportedOperationException 异常。如果需要可变列表,可以像下面一样的操作。

      • 反例(错误示范)

      Java基础(Arrays工具类)(asList()方法)(详细)

      • 转换为ArrayList,才能进行add()操作。

      Java基础(Arrays工具类)(asList()方法)(详细)

      (II)修改原始数组会影响列表。
      • 由于列表和数组共享相同的数据结构,因此如果你修改了原始数组中的元素,那么通过 asList()方法返回的列表中的相应元素也会发生变化。

      (III)基本类型数组的注意。
      • asList()方法接受的是对象数组,因此如果你尝试将一个基本类型的数组(如 int[], double[] 等)直接传递给 asList,它不会按你期望的方式工作。

      • 例如,Arrays.asList(new int[]{1, 2, 3}) 实际上会创建一个只包含一个元素的列表,这个元素是整个 int[] 数组,而不是数组中的每个 int 值。为了解决这个问题,你需要将基本类型数组转换为包装类型的数组,例如使用 Integer[] 而不是 int[]。

      (IIII)常见用途。
      • asList()方法常用于需要将数组作为列表传递给需要 List 类型参数的方法时,或者当你需要快速地将数组转换为一个列表以便使用列表的某些方法(如 contains, indexOf 等)时。

      (3)大部分情况的代码示例
      import java.util.Arrays;  
      import java.util.List;  
        
      public class AsListExample {  
          public static void main(String[] args) {  
              // 示例1:将数组转换为列表  
              String[] array = {"apple", "banana", "cherry"};  
              List<String> list = Arrays.asList(array);  
              System.out.println(list); // 输出:[apple, banana, cherry]  
        
              // 示例2:修改列表中的元素,同时影响原始数组  
              list.set(0, "grape");  
              System.out.println(Arrays.toString(array)); // 输出:[grape, banana, cherry]  
        
              // 示例3:尝试添加元素到列表(会抛出异常)  
              // list.add("date"); // 这行代码会抛出 UnsupportedOperationException  
        
              // 示例4:将基本类型数组转换为列表(错误示例)  
              int[] intArray = {1, 2, 3};  
              List<int[]> intList = Arrays.asList(intArray); // 注意:这里只有一个元素,即intArray本身  
              System.out.println(intList.size()); // 输出:1  
        
              // 正确的做法是将基本类型数组转换为包装类型数组,再转换为列表  
              Integer[] integerArray = {1, 2, 3};  
              List<Integer> integerList = Arrays.asList(integerArray);  
              System.out.println(integerList); // 输出:[1, 2, 3]  
          }  
      }
      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.csdn.net/m0_74363339/article/details/142527546,作者:岁岁岁平安,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:C++:类与对象(2)

      下一篇:git学习(1)(简单概述、代码版本控制方式(集中/分布))

      相关文章

      2025-05-09 08:51:21

      notify和notifyall的区别

      notify和notifyall的区别

      2025-05-09 08:51:21
      notify , synchronized , 方法 , 线程 , 调用 , 释放
      2025-05-09 08:51:09

      Java之线程同步(同步方法、同步代码块)(关键字synchronized)(案例分析)

      多线程的并发执行可以提高程序的效率。但是多个线程访问共享资源时,会引发一些安全问题。

      2025-05-09 08:51:09
      代码 , 同步 , 执行 , 方法 , 线程
      2025-05-09 08:50:35

      springboot实战学习(11)(更新用户基本信息接口主逻辑)

      springboot实战学习(11)(更新用户基本信息接口主逻辑)

      2025-05-09 08:50:35
      接口 , 方法 , 更新 , 用户 , 请求
      2025-05-09 08:20:32

      DS初阶:八大排序之归并排序、计数排序

      归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide andConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。

      2025-05-09 08:20:32
      复杂度 , 序列 , 归并 , 排序 , 数组 , 递归
      2025-05-08 09:04:49

      DS初阶:八大排序之直接插入排序、希尔排序和选择排序

      排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。

      2025-05-08 09:04:49
      array , 元素 , 复杂度 , 排序 , 插入排序 , 有序
      2025-05-08 09:04:49

      DS初阶:循环队列的实现

      DS初阶:循环队列的实现

      2025-05-08 09:04:49
      rear , 元素 , 循环 , 指针 , 数组 , 返回 , 队列
      2025-05-08 09:04:49

      DS初阶:二叉树的顺序结构及堆的实现

      DS初阶:二叉树的顺序结构及堆的实现

      2025-05-08 09:04:49
      堆排序 , 数组 , 算法 , 节点
      2025-05-08 09:04:49

      DS初阶:八大排序之堆排序、冒泡排序、快速排序

      DS初阶:八大排序之堆排序、冒泡排序、快速排序

      2025-05-08 09:04:49
      key , 复杂度 , 快排 , 指针 , 排序 , 递归
      2025-05-08 09:04:25

      DS初阶:顺序表、链表经典OJ题(2)

      DS初阶:顺序表、链表经典OJ题(2)

      2025-05-08 09:04:25
      复杂度 , 思路 , 指针 , 数组 , 空间 , 结点 , 链表
      2025-05-08 09:04:15

      单面值组合的第 K 小金额。

      用go语言,给定一个整数数组 coins,表示不同面值的硬币,同时给出一个整数 k。你可以使用任意数量的这些硬币,但不能将不同面值的硬币组合在一起。

      2025-05-08 09:04:15
      数组 , 硬币
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33136

      阅读量

      4934926

      查看更多

      最新文章

      notify和notifyall的区别

      2025-05-09 08:51:21

      Java之线程同步(同步方法、同步代码块)(关键字synchronized)(案例分析)

      2025-05-09 08:51:09

      springboot实战学习(11)(更新用户基本信息接口主逻辑)

      2025-05-09 08:50:35

      DS初阶:循环队列的实现

      2025-05-08 09:04:49

      DS初阶:八大排序之直接插入排序、希尔排序和选择排序

      2025-05-08 09:04:49

      质数的最大距离。

      2025-05-08 09:04:15

      查看更多

      热门文章

      第十一章《Java实战常用类》第8节:Arrays类

      2023-03-02 10:08:24

      Arrays类的使用

      2023-06-08 06:23:00

      【JavaSE】Arrays类常见方法

      2023-07-28 08:29:03

      Python 处理表格进行成绩排序

      2023-03-21 02:52:11

      C++ 实现排序问题:时间复杂度O(n),空间复杂度O(1)

      2023-03-14 09:17:29

      20.6.5快速排序头文件的使用

      2023-03-20 02:06:43

      查看更多

      热门标签

      java Java python 编程开发 开发语言 代码 算法 线程 html Python 数组 C++ javascript 元素 c++
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      查看更多

      随机文章

      Python编程:内置高阶函数

      重学GoLang之通过刷LeetCode简单题来学习Go语言基础语法

      用go语言,给你一个长度为 n 下标从 0 开始的整数数组 nums。 它包含 1 到 n 的所有数字,请你返回上升四元组的数目。

      Java之自定义异常(例题)

      算法思想总结:分治思想

      Python中的面向对象编程

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 权益商城
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 权益商城
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号