java成神之——集合框架之Array
Array
初始化
声明数组的几种方式
int[] arr = new int[3];
int[] arr = { 1, 2, 3 };
int[] arr = new int[] { 1, 2, 3 };
int[][] arr = { { 1, 2 }, { 3, 4, 5 } };
int[][] arr = new int[5][];
int[][] arr = new int[5][4];
初始化
int[] arr = {1, 2, 3};
List<int[]> list = Arrays.asList(arr);
Integer[] arr = {1, 2, 3};
List<Integer> list = Arrays.asList(arr);
指定数组元素类型
int[] arr = (int[]) Array.newInstance(int.class, 3);
arr[0] = 0;
arr[1] = 1;
arr[2] = 2;
填充元素的几种方式
第一种
int[] arr = new int[3];
Arrays.fill(arr, 1); // [1,1,1]
第二种
int[] arr = new int[3];
Arrays.fill(arr, 0, 1, 2); // [2, 0, 0]
第三种
int[] arr = new int[5];
Arrays.setAll(arr, i -> 2 * i); // [0,2,4,6,8]
第四种
ArrayList<String> arr = new ArrayList<>();
String[] str = {"a", "b", "c"};
arr.addAll(Arrays.asList(str));
第五种
ArrayList<String> arr = new ArrayList<>();
String[] str = {"a", "b", "c"};
Collections.addAll(arr, str);
第六种
int[] arr = {1, 2, 3};
List<Integer> list = Arrays.stream(arr).boxed().collect(Collectors.toList());
第七种
String[] arr = {"a", "b", "c"};
List<String> list = Arrays.stream(arr).collect(Collectors.toList());
第八种
List<String> list = new ArrayList<>(Arrays.asList("a", "b"));
数组转流
第一种
String[] str = new String[] {"a", "b", "c"};
Stream<String> stream = Arrays.stream(str);
第二种
Stream<String> stream = Stream.of("a", "b", "c");
遍历
第一种
for (int i = 0; i < array.length; i++) {
array[i] = i;
}
第二种
for (int e : array) {
System.out.println(e);
}
第三种
Integer[] boxed = {1, 2, 3};
Iterable<Integer> boxedIt = Arrays.asList(boxed);
Iterator<Integer> fromBoxed1 = boxedIt.iterator();
while(fromBoxed1.hasNext()) {
System.out.println(fromBoxed1.next());
}
第四种
int[] primitives = {1, 2, 3};
IntStream primitiveStream = Arrays.stream(primitives);
PrimitiveIterator.OfInt fromPrimitive1 = primitiveStream.iterator();
while(fromPrimitive1.hasNext()) {
System.out.println(fromPrimitive1.next());
}
数组转成字符串
int[] arr = {1, 2, 3, 4, 5};
Arrays.toString(arr);
排序
int[] array = {7, 4, 2, 1, 19};
Arrays.sort(array); // [1,2,4,7,19]
Integer[] array = {7, 4, 2, 1, 19};
Arrays.sort(array, 0, array.length, Collections.reverseOrder()); // [19,7,4,2,1]
查找
二分查找
String[] str = new String[] { "a", "b", "c" };
int index = Arrays.binarySearch(str, "b");
查找索引位置
int index = Arrays.asList(str).indexOf("b");
使用流链式查找索引位置
int index = IntStream
.range(0, str.length)
.filter(i -> "a".equals(str[i]))
.findFirst()
.orElse(-1);
contains是否存在
boolean isPresent = Arrays.asList(str).contains("b");
使用流判断是否存在
boolean isPresent = Stream.of(str).anyMatch(x -> "a".equals(x));
数组扩大
String[] str = new String[] { "a", "b", "c" };
String[] newstr = Arrays.copyOf(str, str.length + 1);
newstr[str.length] = "d";
原始类型数组和包装类型数组转换
原始类型转成包装类型
int[] primitiveArray = {1, 2, 3, 4};
Integer[] boxedArray = Arrays.stream(primitiveArray).boxed().toArray(Integer[]::new);
包装类型转成原始类型
Integer[] boxedArray = {1, 2, 3, 4};
int[] primitiveArray = Arrays.stream(boxedArray).mapToInt(Integer::intValue).toArray();
移除元素
String[] str = new String[]{"a", "b", "c"};
List<String> list = new ArrayList<>(Arrays.asList(str));
list.remove("a");
比较数组是否相等
String[] str1 = new String[]{"a", "b", "c"};
String[] str2 = new String[]{"a", "b", "c"};
Arrays.equals(str1, str2);
克隆
浅克隆
第一种
int[] a = { 4, 1, 3, 2 };
int[] b = a.clone();
第二种
int[] a = {4, 1, 3, 2};
int[] b = Arrays.copyOf(a, a.length);
第三种
int[] a = { 4, 1, 3, 2 };
int[] b = new int[a.length];
System.arraycopy(a, 0, b, 0, a.length);
第四种
int[] a = { 4, 1, 3, 2 };
int[] b = Arrays.copyOfRange(a, 0, a.length);
类型转换
Integer[] arr = { 1, 2, 3 };
Number[] numbers = Arrays.copyOf(arr, arr.length, Number[].class);
过滤元素
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
List<String> filteredList = list.stream().filter(item -> !"b".equals(item)).collect(Collectors.toList());
list.removeIf(item -> "b".equals(item));
结语
本文章是java成神的系列文章之一
如果你想知道,但是本文没有的,请下方留言
我会第一时间总结出来并发布填充到本文
java成神之——集合框架之Array的更多相关文章
- java成神之——集合框架之队列,栈,集合并发
集合 队列和双端队列 PriorityQueue Deque BlockingQueue Queue 栈 集合并发 线程锁 线程安全集合 结语 集合 队列和双端队列 PriorityQueue 此队列 ...
- java成神之——集合框架之Maps,Hashtable
集合 Maps HashMap 创建和初始化map 遍历方式 LinkedHashMap WeakHashMap TreeMap 线程锁 Hashtable 结语 集合 Maps HashMap Ma ...
- java成神之——集合框架之ArrayList,Lists,Sets
集合 集合种类 ArrayList 声明 增删改查元素 遍历几种方式 空集合 子集合 不可变集合 LinkedList Lists 排序 类型转换 取交集 移动元素 删除交集元素 Sets 集合特点 ...
- java成神之——ImmutableClass,null检查,字符编码,defaultLogger,可变参数,JavaScriptEngine,2D图,类单例,克隆,修饰符基本操作
ImmutableClass null检查 字符编码 default logger 函数可变参数 Nashorn JavaScript engine 执行脚本文件 改变js文件输出流 全局变量 2D图 ...
- Java成神路上之设计模式系列教程之一
Java成神路上之设计模式系列教程之一 千锋-Feri 在Java工程师的日常中,是否遇到过如下问题: Java 中什么叫单例设计模式?请用Java 写出线程安全的单例模式? 什么是设计模式?你是否在 ...
- java成神之——文件IO
文件I/O Path Files File类 File和Path的区别和联系 FileFilter FileOutputStream FileInputStream 利用FileOutputStrea ...
- java成神之——Stream和Optional
Stream流 基本使用 流关闭 平行流 流重用 iterator转换成流 分组计数 无限流 流转集合 压缩流 统计数值流 集合转换流遍历 流拼接 reduce 使用流生成随机字符串 流的包装流 几种 ...
- 已看1.熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的Java API,包括集合框架、多线程(并发编程)、I/O(NIO)、Socket、JDBC、XML、反射等。[泛型]\
1.熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的Java API,包括集合框架.多线程(并发编程).I/O(NIO).Socket.JDBC.XML.反射等.[泛型]\1* ...
- 一份完整的 Java 成神路线图,值得收藏!
Java,是现阶段中国互联网公司中,覆盖度最广的研发语言. 有不少朋友问,如何深入学习Java后端技术栈,今天分享一个,互联网牛人整理出来的完整的Java成神路线图. 一:常见模式与工具 学习Java ...
随机推荐
- JSON字符串与JSON对象的互相转换
比如工作中遇到的app强制退出功能的参数问题 首先定义一个JSON字符串 objectStr : String value=UUID.randomUUID().toString();SimpleDat ...
- Elasticsearch: 权威指南(官方教程)
<Elasticsearch 权威指南>中文版 序言 前言 基础入门 深入搜索 处理人类语言 聚合 地理位置 数据建模 管理.监控和部署
- js最基础的作用域问题
1.什么是作用域? 每个变量和函数,都有其作用的范围,超出这个范围,就不能使用了,这个范围就叫做“作用域”,我们举个例子,一个文件中的变,在另一个文件中直接访问,是访问不到的,两个文件是两个“域”,两 ...
- Windows系统下MySQL解压版添加到系统服务
MySQL软件版本:64位 5.7.12 1.首先配置MySQL的环境变量,在系统环境变量Path的开头添加MySQL的bin目录的路径,以“;”结束,我的路径配置如下: 2.修改MySQL根目录下的 ...
- Leetcode 807. Max Increase to Keep City Skyline
class Solution(object): def maxIncreaseKeepingSkyline(self, grid): """ :type grid: Li ...
- Unity3d command line arguments
Options Many of these relate to Unity3d command line arguments Batch Mode - should be left enabled u ...
- WPS烦人问题
[原]彻底解决WPS弹出热点广告.WPS购物图标的办法 搜索wpsnotify.exe,删除并新建同名文件. 搜索updateself.exe,删除并新建同名文件. 关闭我的WPS,搜索khomepa ...
- LINUX下的ssh登录之后的文件远程copy:scp命令(接前文ssh登录)
先记录参考: 1:http://www.cnblogs.com/peida/archive/2013/03/15/2960802.html 2:http://www.vpser.net/manage/ ...
- 使用 minio 搭建私有对象存储云。aws-php-sdk 操作object
How to use AWS SDK for PHP with Minio Server aws-sdk-php is the official AWS SDK for the PHP program ...
- Supervisor进程监控
安装 yum install -y python-setuptools easy_install supervisor echo_supervisord_conf > /etc/supervis ...