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 ...
随机推荐
- Django进阶Model篇001 - mysql 数据库的配置
django 默认支持sqlite.mysql.oracle.postgresql数据库,像db2和sqlserver之类的数据库需要第三方的支持,具体详见: https://docs.djangop ...
- JDBC相关总结
JDBC statement的相关总结 1.Statement.PreparedStatement和CallableStatement都是接口(interface). 2.Statement继承自Wr ...
- 【scala】集和映射
Scala同时提供了集(Set)和映射(Map)的可变和不可变的不同选择,但使用同样的简单名字,可以通过类继承的关系来区分可变和不可变版本. 如图所示,左边的为不可变集,右边的为可变集. //我们创建 ...
- Node.js/Python爬取网上漫画
某个周日晚上偶然发现了<火星异种>这部漫画,便在网上在线看了起来.在看的过程中图片加载很慢,而且有时候还不小心点到广告,大大延缓了我看的进度.后来想到能不能把先把漫画全部抓取到本地再去看. ...
- linux下vim对于意外退出的文档的再次开启
转载的: 1.对于同一个文件如果上次已经打开,而未关闭的情况下,又打开该文件进行编辑时,会出现如下提醒: 这是由于已经打开但未闭关的文件,会在其目录下出现一个.swp的文件,由于是属于隐藏文件,可以用 ...
- LeetCode OJ:Permutations(排列)
Given a collection of numbers, return all possible permutations. For example,[1,2,3] have the follow ...
- About toupper()
// toupper.c #include <stdio.h> #include <string.h> #include <ctype.h> int main() ...
- R 语言赋值运算符:`<-` , `=`, `<<-`
<- 与 = 间的区别 <- 与 = 在大部分情况下是应该可以通用的.并且,相对于 <<- 运算符,它们的赋值行为均在它们自身的环境层(environment hierarch ...
- animal farm 第一章阅读笔记
chapter 1 Old Major's dream. paragraph 1 //Mr Jones is the mastor of the Manor Farm.That night ...
- 剑指offer-第三章高质量代码(反转链表)
题目:定义一个函数,输入一个链表的头节点,反转该链表并输出反转链表的头节点. 思路:对一个链表反转需要三个指针操作来保证链表在反转的过程中保证不断链,给链表一个行动指针pNode,对pNode指向的节 ...