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的更多相关文章

  1. java成神之——集合框架之队列,栈,集合并发

    集合 队列和双端队列 PriorityQueue Deque BlockingQueue Queue 栈 集合并发 线程锁 线程安全集合 结语 集合 队列和双端队列 PriorityQueue 此队列 ...

  2. java成神之——集合框架之Maps,Hashtable

    集合 Maps HashMap 创建和初始化map 遍历方式 LinkedHashMap WeakHashMap TreeMap 线程锁 Hashtable 结语 集合 Maps HashMap Ma ...

  3. java成神之——集合框架之ArrayList,Lists,Sets

    集合 集合种类 ArrayList 声明 增删改查元素 遍历几种方式 空集合 子集合 不可变集合 LinkedList Lists 排序 类型转换 取交集 移动元素 删除交集元素 Sets 集合特点 ...

  4. java成神之——ImmutableClass,null检查,字符编码,defaultLogger,可变参数,JavaScriptEngine,2D图,类单例,克隆,修饰符基本操作

    ImmutableClass null检查 字符编码 default logger 函数可变参数 Nashorn JavaScript engine 执行脚本文件 改变js文件输出流 全局变量 2D图 ...

  5. Java成神路上之设计模式系列教程之一

    Java成神路上之设计模式系列教程之一 千锋-Feri 在Java工程师的日常中,是否遇到过如下问题: Java 中什么叫单例设计模式?请用Java 写出线程安全的单例模式? 什么是设计模式?你是否在 ...

  6. java成神之——文件IO

    文件I/O Path Files File类 File和Path的区别和联系 FileFilter FileOutputStream FileInputStream 利用FileOutputStrea ...

  7. java成神之——Stream和Optional

    Stream流 基本使用 流关闭 平行流 流重用 iterator转换成流 分组计数 无限流 流转集合 压缩流 统计数值流 集合转换流遍历 流拼接 reduce 使用流生成随机字符串 流的包装流 几种 ...

  8. 已看1.熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的Java API,包括集合框架、多线程(并发编程)、I/O(NIO)、Socket、JDBC、XML、反射等。[泛型]\

    1.熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的Java API,包括集合框架.多线程(并发编程).I/O(NIO).Socket.JDBC.XML.反射等.[泛型]\1* ...

  9. 一份完整的 Java 成神路线图,值得收藏!

    Java,是现阶段中国互联网公司中,覆盖度最广的研发语言. 有不少朋友问,如何深入学习Java后端技术栈,今天分享一个,互联网牛人整理出来的完整的Java成神路线图. 一:常见模式与工具 学习Java ...

随机推荐

  1. access_ok | 检查用户空间内存块是否可用

    access_ok() 函数是用来代替老版本的 verify_area() 函数的.它的作用也是检查用户空间指针是否可用. 函数原型:access_ok (type, addr, size); 变量说 ...

  2. [置顶] 长谈:关于 View Measure 测量机制,让我一次把话说完

    <倚天屠龙记中>有这么一处:张三丰示范自创的太极剑演示给张无忌看,然后问他记住招式没有.张无忌说记住了一半.张三丰又慢吞吞使了一遍,问他记住多少,张无忌说只记得几招了.张三丰最后又示范了一 ...

  3. Matisse,来自知乎的PhotoPicker

    简介 Matisse,是一款由知乎开源的媒体选择器. 在Activity和Fragment中使用 支持JPEG,PNG,GIF的图片选择和MPEG,MP4格式的视频选择.不能同时选择图片和视频 两种主 ...

  4. 【MFC】CDC::BitBlt介绍

    CDC::BitBlt介绍 2011-11-04 08:25 19576人阅读 评论(6) 收藏 举报 摘自: http://blog.csdn.net/bberdong/article/detail ...

  5. 软件开发中IT用语-日文和英文对照版

    開発工程 † 要件定義…Requirement Definition (Analyze) 外部設計…External Design 内部設計…Internal Design 開発…Coding テスト ...

  6. maven搭建

    http://blog.csdn.net/zhshulin/article/details/30779873 http://blog.csdn.net/zhshulin/article/details ...

  7. bzoj 4319 cerc2008 Suffix reconstruction——贪心构造

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4319 如果字符集有 5e5 那么大的话,挨个填上去就行了.但只有26个字符,所以要贪心地尽量 ...

  8. Linux安装python

    1.打开终端,输入:wget https://www.python.org/ftp/python/3.5.0/Python-3.5.0b4.tgz下载完毕后 2.输入解压命令:tar –zxvf Py ...

  9. 关于yii2的中文乱码问题

    在数据库配置中这么配就可以了 <?php return [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=127.0.0. ...

  10. week01—绪论

    一.作业题目 仿照三元组或复数的抽象数据类型写出有理数抽象数据类型的描述 (有理数是其分子.分母均为整数且分母不为零的分数). 有理数基本运算: 构造有理数T,元素e1,e2分别被赋以分子.分母值 销 ...