新手了解java 数组基础知识
作者:王星伟QAQ 发布时间:2023-10-22 03:19:12
1、数组的定义
先声明后使用
数据类型 [] 数组名称 = new 数据类型[长度];String[] arr3 = new String[5];
数据类型 数组名称[] = new 数据类型[长度];String arr[] = new String[5];
直接初始化
String[] arrs = {"1","2","3"};
声明并初始化
String[] sarr = new String[]{"a","b"};
2、array 遍历
流遍历
将数组封装成流进行操作,所有的操作都和列表一样操作
public static void main(String[] args) {
String[] arrs = {"1","2","3"};
Arrays.stream(arrs).forEach(System.out::println);
}
普通遍历
普通遍历有三种方式,建议使用第一种,
如果需要使用索引可以使用第三种
如果想要倒序,则使用第三种
3、List和array 之间的转换
list 和 array 之间大有联系,list 的实现形式有链表和 数组,我们开发中经常需要对两者进行转换
1、数组转list
使用循环 转换为list
借助工具方法
代码展示:
public static void main(String[] args) {
String[] arrs = {"1","2","3"};
// 循环转换
List<String> list1 = new ArrayList<>();
for (String arr : arrs) {
list1.add(arr);
}
// 借助数组工具类
List<String> list2 = Arrays.asList(arrs);
// 借助集合工具类
List<String> list3 = new ArrayList<>();
Collections.addAll(list2,arrs);
}
2、list 转数组
list 内置方法 toArray
直接循环
代码展示
public static void main(String[] args) {
List<String> list = Arrays.asList("1","2");
String[] arr1 = new String[list.size()];
// 循环遍历赋值
for (int i = 0; i < list.size(); i++) {
arr1[i] = list.get(i);
}
// 调用list 方法
String[] arr2 = (String[]) list.toArray();
}
3、Arrays工具类
toString()
打印数组的方法,如果不调用这个方法打印的是内存地址
stream()
将数组转换为流操作,具体就不演示了
sort()
对数组进行排序,注意这个排序是数组内部排序,没有返回值,原数组会被改变
setAll
对数组内的元素进行操作,需要提供一个function,具有不同的数据类型
String[] arrs = {"1","2","3"};
Arrays.setAll(arrs, e->e+"0");
for (String arr : arrs) {
System.out.println(arr);
}
binarySearch
看名字都知道这是二分查找,具体的算法也很简单,如果你还不会,可以补一下了,如果你懂二分查找应该知道,在调用这个方法之前要保证数组是有序的!
copyOf
名字也很直白,拷贝数组,扩展就是增加一些长度限制,或者填充数据的设置
equals
看起来不需要解释
deepEquals
判断两个数组的深度是否相同,也就是数组嵌套了几层
fill
public static void main(String[] args) { String[] arrs = {"1","2","3"}; String[][] arr2 = {{"1"},{"2"},{"3"}}; boolean b = Arrays.deepEquals(arr2, arrs); System.out.println(b); }
认识英语的话基本上都懂,就是如何填充数组,当然你也可以自己进行循环操作
hashCode
计算数组的hash code
parallelPrefix
这个有些意思的,并行的累计操作数组内的元素,看个例子你就知道了
public static void main(String[] args) {
String[] sarr = new String[]{"a","b","c"};
Arrays.parallelPrefix(sarr, (sum,e1)->e1 + sum);
System.out.println(Arrays.toString(sarr));
}
看下执行结果:
4、可能遇到的问题
1、索引越界问题,数组的下标索引是从0 开始的,最后一个索引是length -1 ,注意不要越界
2、下面的方式创建的列表不支持添加
因为Arrays中的ArrayList并没有实现remove()和add()方法,所以抛出了异常。所以说 Arrays.asList 返回的 List 是一个不可变长度的列表,此列表不再具备原 List 的很多特性,因此慎用 Arrays.asList 方法。
String[] arr = {"1", "2", "3"};
List list = Arrays.asList(arr);
arr[1] = "4";
try {
list.add("5");
} catch (Exception ex) {
ex.printStackTrace();
}
3、一个小技巧,将数组绕成圈进行遍历
使用对数组长度取余即可
public static void main(String[] args) {
String[] arr = {"a", "b", "c"};
int i = 0;
int j = 0;
int length = arr.length;
while (j++ <10){
System.out.println(arr[i%length]);
i++;
}
}
可以看到多次遍历了数组
来源:https://blog.csdn.net/ww741258963123/article/details/117901124
猜你喜欢
- 这篇文章主要介绍了Java日期与时间类原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参
- 在我们平时写程序的时候,有些参数是经常改变的,而这种改变不是我们预知的。比如说我们开发了一个操作数据库的模块,在开发的时候我们连接本地的数据
- 1.什么是mybatis逆向工程在使用mybatis时需要程序员自己编写sql语句,针对单表的sql语句量是很大的,mybatis官方提供了
- Mybatis Plus流式查询mybatis plus 中自定义如下接口,就可以实现流式查询,mybatis 中同样适用。@Select(
- 本文实例为大家分享了springboot实现异步任务的具体代码,供大家参考,具体内容如下1.什么异步任务同步:一定要等任务执行完了,得到结果
- Redis 简介Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。Redis 与其他 key - v
- Java语言中反射 * 接口的解释与演示Java在JDK1.3的时候引入了 * 机制、可以运用在框架编程与平台编程时候捕获事件、审核数据
- @ConditionalOnMissingBean,它是修饰bean的一个注解,主要实现的是,当你的bean被注册之后,如果而注册相同类型的
- 本文实例讲述了java编程实现根据EXCEL列名求其索引的方法。分享给大家供大家参考,具体如下:原理:[a1-z26]*26^n-1 + [
- 今天我们来看一下在C#中对象序列化XML的方法。不得不说,在这个Json横行的年代,XML虽然式微,但也的确是一股子清流。(个人感觉)不多说
- 这篇文章主要介绍了Springboot整合MybatisPlus的实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定
- 本文实例讲述了Spring实战之注入集合值操作。分享给大家供大家参考,具体如下:一 配置<?xml version="1.0
- step1. 导包(导入要使用的标签的jar文件)。step2. 使用taglib指令引入要使用的标签。taglib指令: &nb
- 上一节我们了解了Lock接口的一些简单的说明,知道Lock锁的常用形式,那么这节我们正式开始进入JUC锁(java.util.concurr
- 修改加密和验证方法/** * 生成BCryptPasswordEncoder密码 *
- 前言『 * 』其实源于设计模式中的代理模式,而代理模式就是使用代理对象完成用户请求,屏蔽用户对真实对象的访问。举个最简单的例子,比如我们想
- Spring propagation7种事务配置1、简述在声明式的事务处理中,要配置一个切面,其中就用到了propagation,表示打算对
- 在编写类的时候可以使用两种方式定义类:public class定义类:class定义类:如果一个类声明的时候使用了public class进
- 这篇文章主要介绍了SpringBoot集成MybatisPlus报错的解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定
- 前言在实际生活中,地图是我们经常使用的一种工具,通常我们会用它进行导航,输入一个出发城市,输入一个目的地城市,就可以把路线规划好,而在规划好