这一章内容不多且不难,估计稍有经验的人都可以飞速翻阅。
引用
数组就是一个简单的线性序列,这使得元素访问非常快速。但是为这种速度所付出的代价是数组对象的大小被固定。
钢炼的等价交换原则的现实版。。。
速度是数组唯一的优势了,如果性能没有问题,ArrayList完胜,尤其是数组和泛型的关系不太好。
感觉其他真没什么好说的了。。。好吧,列下JAVA中对数组常用操作的方法:
System.arraycopy():
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
基本类型和对象类型的数组都可,比我们写for循环要快,要注意的是这是浅拷贝,即只是拷贝了对象的引用。
Arrays.equal():
static boolean equals(Object[] a, Object[] a2)
如果两个指定的 Objects 数组彼此相等,则返回 true。
当然还有各种基本类型参数的版本,如果是多维数组则要用deepEquals()。另外对于对象类型,是通过其equals()方法比较,所以String类型的话只是比较字符串值。
Arrays.fill():
static void fill(Object[] a, int fromIndex, int toIndex, Object val)
将指定的 Object 引用分配给指定 Object 数组指定范围中的每个元素。
当然有各种基本类型参数的重载版本,fromIndex和toIndex可以没有表示所有都赋值。感觉这方法太单调了,所有值都相同。。。
Arrays.sort():
static void sort(Object[] a, int fromIndex, int toIndex)
根据元素的自然顺序对指定对象数组的指定范围按升序进行排序。
同样有基本类型参数的重载版本(没有boolean)。对于基本类型,自然顺序比较容易理解,但对于对象类型,让该对象继承接口Comparable<T>,然后在compareTo(T o)方法中按自己的喜好设置比较规则。
如果这个方法已经被别人先手了,但又不是自己想要的排序方式肿么办,用下面的这个方法吧
static <T> void sort(T[] a, int fromIndex, int toIndex, Comparator<? super T> c)
根据指定比较器产生的顺序对指定对象数组的指定范围进行排序。
写个具体的比较器继承 Comparator<T>接口然后实现compare(T o1, T o2)方法,把这个比较器传入即可。另外在这里看到了泛型中通配符单一边界中super的实际应用。
Arrays.binarySearch():
static int binarySearch(Object[] a, int fromIndex, int toIndex, Object key)
使用二分搜索法来搜索指定数组的范围,以获得指定对象。
同样有基本类型参数的重载版本(没有boolean),与上面的sort()方法类似,需继承Comparable<T>接口或是使用比较器的重载版本
static <T> int binarySearch(T[] a, int fromIndex, int toIndex, T key, Comparator<? super T> c)
但要注意,二分搜索法是建立在对象数组已排序的基础上,如果没有排序或是数组中有重复元素的话,嘿嘿。。。
Arrays.toString():
static String toString(Object[] a)
返回指定数组内容的字符串表示形式。
同样有基本类型参数的重载版本,以及多维数组时的deepToString()。
Arrays.asList():
static <T> List<T> asList(T... a)
返回一个受指定数组支持的固定大小的列表。
即数组转List,List转数组可以用方法Collection.toArray()。
分享到:
相关推荐
在讨论Java编程思想学习笔记时,首先需要了解的是Java语言的平台无关性,而这一特性正是通过Java虚拟机(JVM)得以实现的。JVM作为Java程序设计的关键组成部分,对于Java开发人员来说是必须掌握的基础知识。在该学习...
这是清华大学的一套JAVA教程,包括详尽的例子、课后习题与解答、相关计算机英语词汇,就课程...同时Java语言是一门面向对象的语言,通过学习可以掌握用面向对象进行编程的思想和实践,使学生成为一名合格的Java程序员。
第15章 泛型 第16章 数组 第17章 容器深入研究 第18章 Java I/O系统 第19章 枚举类型 第20章 注解 第21章 并发 第22章 图形化用户界面 附录A 补充材料 可下载的补充材料 Thinking in C:Java的基础 Java编程思想 ...
3.17 操作符小结 3.18 总结 第4章 控制执行流程 4.1 true和false 4.2 if-else 4.3 迭代 4.3.1 do-while 4.3.2 for 4.3.3 逗号操作符 4.4 Foreach语法 4.5 return 4.6 break和 continue 4.7 臭名昭著的“goto” 4.8 ...
不但详细介绍了Java语言本身,而且讨论了面向对象的设计思想和编程方法、UML建模语言、图形用户界面的编程方法、网络和数据库程序的编程方法、线程的使用、Java集合框架等实用开发技术。全书以面向对象的程序设计...
在Java编程中,有时我们需要将输入的字符串进行倒序输出,这在各种场景下都有可能用到,例如处理用户输入、数据反转等。本篇文章总结了三种常用的Java实现字符串倒序输出的方法,以下是对这些方法的详细解释: 1. *...
【描述】"java结课项目"表明这是一项课程作业,可能是在学习Java编程课程的后期阶段,学生们被要求独立或团队合作完成的。这样的项目通常要求学生将课堂上学习的面向对象编程概念、事件处理、图形用户界面(GUI)...
综上所述,这份资料不仅涵盖了Java编程的基础知识,还深入到了更高级的主题,如面向对象编程、多线程处理以及标准库的使用等。对于准备参加Java面试的求职者来说,这是一份非常全面且实用的学习指南。
它的基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后分别对这两部分记录继续进行排序,以达到整个序列有序的目标。快速排序的平均时间复杂度为O(nlogn),...
### Java编程思想——《Thinking in Java》核心知识点梳理 #### 一、前言与学习目标 - **前言**:本书旨在帮助读者深入理解Java语言的设计理念及其在实际开发中的应用。 - **学习目标**: - 掌握Java基础知识与...
《Java版连连看》是一款基于Java编程语言开发的益智游戏,它继承了经典连连看游戏的核心玩法,同时也展示了Java在图形用户界面(GUI)设计和游戏开发中的应用能力。这款Java结课大作业旨在锻炼学生的图形编程技能,...
总的来说,“动物换位游戏”是JAVA编程的一个有趣实践,它涵盖了面向对象编程、数据结构、算法和用户交互等多个重要概念,对于学习和提升JAVA编程技能有着显著的价值。同时,游戏设计的自由度也为开发者提供了创新和...
数组是Java编程中最基础也是最常用的数据结构之一。本节将详细介绍数组的基本操作,包括排序、查找以及转置等。 ##### 1. 排序算法 排序算法在计算机科学中占据着重要的地位。这里将介绍两种常见的排序算法:冒泡...
通过上述知识点的学习,读者可以系统地掌握Java的基础知识,包括语言的基本语法、面向对象的编程思想以及一些高级特性。这对于进一步深入学习Java以及进行实际项目开发都是非常有帮助的。希望这些知识点能够帮助你在...
#### 小结 本书《Agile Java: Crafting Code with Test-Driven Development》不仅深入浅出地介绍了Java语言的基础知识,还特别强调了敏捷开发理念与测试驱动开发的实际应用。通过阅读本书,读者不仅可以掌握Java...
3.7.6 循环语句小结78 3.7.7 break语句79 3.7.8 continue语句82 3.8 JavaDebug技术84 3.9 本章练习85 第4章 4.1 一维数组90 4.1.1 为什么要使用数组90 4.1.2 什么是数组91 4.1.3 如何使用数组92 4.1.4 经验之谈-数组...
这个课程设计旨在让学生掌握Java编程技能,理解面向对象编程思想,并熟悉软件开发的完整流程。 1. **设计任务与要求** - 设计任务是创建一个具有基本功能的贪吃蛇游戏,包括显示蛇的移动、通过键盘控制蛇的行动、...