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 ...
随机推荐
- Selenium with Python 001 - 安装篇
Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试. 通过Selenium Python的API,你可以非常直观 ...
- Chrome浏览器导入数字证书
1.打开 chrome ,点击 右上角的选项图标,在下拉列表中找到 设置 . 2.在设置页面中,滚动到页面的最底部,找到,并点击显示高级设置,找到 HTTPS/SSL 这一项,点击 管理证书 按键.
- IOS-RunTime(刨根问底)
方法调用 让我们看一下方法调用在运行时的过程(参照前文类在runtime中的表示) 如果用实例对象调用实例方法,会到实例的isa指针指向的对象(也就是类对象)操作.如果调用的是类方法,就会到类对象的i ...
- neutron之SDN简单测试
title: Neutron SDN 手动实现手册 date: 2017-04-13 23:37 tags: Network 本文旨在通过自己搭建类似neutron (openvswitch + gr ...
- 影响wifi信号强度因素
影响WIFI信号强度因素: 1.室内错综复杂的环境,会在一定程度上导致WIFI无线信号产生多径传播现象,从而导致信号强度的不稳定性: 2.室内的人员密集程度和人员流动情况也会对WIFI信号强度产生影响 ...
- oracle 常用的系统表查询
(转自:http://blog.csdn.net/marshalchen/article/details/6552103) select * from user_tab_cols where colu ...
- dubbo-monitor安装、 监控中心 配置过程
简单介绍下monitor: Simple Monitor挂掉不会影响到Consumer和Provider之间的调用,所以用于生产环境不会有风险. 配置好了之后可以结合admin管理后台使用,可以清晰的 ...
- Intellij IDEA带参数启动Springboot注意事项
问题 不同版本的spring-boot-maven-plugin的jvm参数配置有所不同,同时与通过main方法启动springboot程序传递参数也有所不同. 分析 在运行main方法时,可以通过j ...
- Delphi Xe4 游戏开发的技术选型.
asphyre 是支持 FireMonkey的. 利用Firemonkey的跨平台接口.实现 win,mac,ios. 其它方案估计就得靠 FPC 了. 好处是多了输出Andriod的可能. zeng ...
- Wordpress在主题或者插件中自定义存储附件的方法
1.前端使用form表单 //单文件上传,我的业务需求中限制了必须上传图片 <input type="file" name="singlename" ac ...