`
aimuyou
  • 浏览: 5307 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Java编程思想之数组小结

    博客分类:
  • JAVA
阅读更多
这一章内容不多且不难,估计稍有经验的人都可以飞速翻阅。
引用
数组就是一个简单的线性序列,这使得元素访问非常快速。但是为这种速度所付出的代价是数组对象的大小被固定。
钢炼的等价交换原则的现实版。。。

速度是数组唯一的优势了,如果性能没有问题,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语言的平台无关性,而这一特性正是通过Java虚拟机(JVM)得以实现的。JVM作为Java程序设计的关键组成部分,对于Java开发人员来说是必须掌握的基础知识。在该学习...

    清华大学JAVA教程

    这是清华大学的一套JAVA教程,包括详尽的例子、课后习题与解答、相关计算机英语词汇,就课程...同时Java语言是一门面向对象的语言,通过学习可以掌握用面向对象进行编程的思想和实践,使学生成为一名合格的Java程序员。

    Thinking in java4(中文高清版)-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语言程序设计

    不但详细介绍了Java语言本身,而且讨论了面向对象的设计思想和编程方法、UML建模语言、图形用户界面的编程方法、网络和数据库程序的编程方法、线程的使用、Java集合框架等实用开发技术。全书以面向对象的程序设计...

    Java实现字符串倒序输出的常用方法小结

    在Java编程中,有时我们需要将输入的字符串进行倒序输出,这在各种场景下都有可能用到,例如处理用户输入、数据反转等。本篇文章总结了三种常用的Java实现字符串倒序输出的方法,以下是对这些方法的详细解释: 1. *...

    java贪吃蛇项目(含实验报告)

    【描述】"java结课项目"表明这是一项课程作业,可能是在学习Java编程课程的后期阶段,学生们被要求独立或团队合作完成的。这样的项目通常要求学生将课堂上学习的面向对象编程概念、事件处理、图形用户界面(GUI)...

    java面试题目精选

    综上所述,这份资料不仅涵盖了Java编程的基础知识,还深入到了更高级的主题,如面向对象编程、多线程处理以及标准库的使用等。对于准备参加Java面试的求职者来说,这是一份非常全面且实用的学习指南。

    java实现快速排序小结

    它的基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后分别对这两部分记录继续进行排序,以达到整个序列有序的目标。快速排序的平均时间复杂度为O(nlogn),...

    thinking in java txt

    ### Java编程思想——《Thinking in Java》核心知识点梳理 #### 一、前言与学习目标 - **前言**:本书旨在帮助读者深入理解Java语言的设计理念及其在实际开发中的应用。 - **学习目标**: - 掌握Java基础知识与...

    java 版连连看

    《Java版连连看》是一款基于Java编程语言开发的益智游戏,它继承了经典连连看游戏的核心玩法,同时也展示了Java在图形用户界面(GUI)设计和游戏开发中的应用能力。这款Java结课大作业旨在锻炼学生的图形编程技能,...

    动物换位游戏(代码+实验报告)

    总的来说,“动物换位游戏”是JAVA编程的一个有趣实践,它涵盖了面向对象编程、数据结构、算法和用户交互等多个重要概念,对于学习和提升JAVA编程技能有着显著的价值。同时,游戏设计的自由度也为开发者提供了创新和...

    Java初学者必须掌握代码大全及解析_1(本人总结).docx

    数组是Java编程中最基础也是最常用的数据结构之一。本节将详细介绍数组的基本操作,包括排序、查找以及转置等。 ##### 1. 排序算法 排序算法在计算机科学中占据着重要的地位。这里将介绍两种常见的排序算法:冒泡...

    java学习笔记

    通过上述知识点的学习,读者可以系统地掌握Java的基础知识,包括语言的基本语法、面向对象的编程思想以及一些高级特性。这对于进一步深入学习Java以及进行实际项目开发都是非常有帮助的。希望这些知识点能够帮助你在...

    ( 2 agile java.pdf

    #### 小结 本书《Agile Java: Crafting Code with Test-Driven Development》不仅深入浅出地介绍了Java语言的基础知识,还特别强调了敏捷开发理念与测试驱动开发的实际应用。通过阅读本书,读者不仅可以掌握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课程设计.doc

    这个课程设计旨在让学生掌握Java编程技能,理解面向对象编程思想,并熟悉软件开发的完整流程。 1. **设计任务与要求** - 设计任务是创建一个具有基本功能的贪吃蛇游戏,包括显示蛇的移动、通过键盘控制蛇的行动、...

Global site tag (gtag.js) - Google Analytics