数组的常用方法

java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。

具有以下功能:

  • 给数组赋值:通过 fill 方法。
  • 对数组排序:通过 sort 方法,按升序。
  • 比较数组:通过 equals 方法比较数组中元素值是否相等。
  • 查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。

具体说明请查看下表:

序号

方法和说明

1

public static int binarySearch(Object[] a, Object key)

用二分查找算法在给定数组中搜索给定值的对象(Byte,Int,double等)。数组在调用前必须排序好的。如果查找值包含在数组中,则返回搜索键的索引;否则返回 (-(插入点) - 1)。

2

public static boolean equals(long[] a, long[] a2)

如果两个指定的 long 型数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的,则认为这两个数组是相等的。换句话说,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。

3

public static void fill(int[] a, int val)

将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。

4

public static void sort(Object[] a)

对指定对象数组根据其元素的自然顺序进行升序排列。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。

容器_Collection &Map

表示一组对象,它是集中,收集的意思,就是把一些数据收集起来。

Collection函数库是在java.util包下的一些接口和类,类是用来产生对象存放数据用的,而接口是访问数据的方式。

Collection函数库与数组的亮点不同:

1、数组的容量是有限制的,而Collection库没有这样的限制,它容量可以自动调节。

2、Collection函数库只能用来存放对象,而数组没有这样的限制。

Collection接口是Collection层次结构中的根接口,它定义了一些最基本的访问方法,让我们能用统一的方式通过它或者它的子接口来访问数据。

区别:Collection代表一组对象,Collection函数库就是java中的集合框架,Collection接口,是这个集合框架中的根接口。

存放在Collection库中的数据,被称为元素(element)。

接口:

List:有序可重复

Set:无序不可重复

HashSet:

Map:键值对。可以通过一个对象找到另外一个对象

Collection接口:定义了存取一组对象的方法,其子接口Set和List分别定义了存储方式。

Map接口定义了存储“键(key)— 值(value)映射对“的方法。

List分类ArrayList和LinkList,一个是顺序表,一个是链表。

Map接口:

Map——映射

实现Map接口的类用来存储键(key)— 值(value)对。

Map接口的实现类有HashMap和TreeMap等。

Map类中存储的键—值对通过用键来标识,所以键值不能重复。

1List

list的特点是有序且元素可以重复,分为ArrayList和LinkedList两种。

1.1 ArraytList 

ArrayList是顺序表,顺序表的特征是数组内的元素按顺序存储,根据其在数组中的序号就可以查询的特定元素,非常便于查询。但是不便于插入与删除,因为在数组中间插入或删除一个元素,其后面的元素都要前进或者后退一位。

1)ArrayList初始化

ArrayList arr1 = new ArrayList();    //这种情况下默认有10个存储空间

ArrayList arr2 = new ArrayList(3);  //这种情况下存储空间内数目与

//括号内数字相同

ArrayList arr3 = new ArrayList(arr2);   //这种情况下相当于把另一个数组赋值

//给了新定义的数组

2) ArrlyList的插入、删除、匹配,查询等其它详细方法参考API

1.2 LinkedList

LinkedList就是一个双向链表。双向链表没有所谓的序号,取而代之的是链表的每个结点都包括前驱结点,后继结点,data值三个部分。像一个串一样串成一条链子。这种结构的好处插入、删除特别方便,只需要找到需要插入或者删除的结点,再将此结点的前后指针连好就可以了,不需要像顺序表一样进行大量数据的位置变动。但是对于随机访问,匹配,查询等方法就比较麻烦,因为需要从链表的表头开始一个一个往下去顺序查找。

2Map

Java中的map集合使用键(key)值(value)来保存数据,其中值(value)可以重复,但键(key)必须是唯一,也可以为空,但最多只能有一个key为空,它的主要实现类有HashMap、LinkedHashMap、TreeMap。

3Set

Set也是一个集合,特点是有序不可重复,所以Set最常用的就是测试归属性,很容易的询问出某个对象是否存在Set中。并且Set是具有和Collection完全一样的接口,没有额外的功能,只是表现的行为不同。

泛型< >

泛型的概念:

泛型即使参数化类型,使用广泛的类型。

起因:

数据类型不明确: 装入数据的类型都被当作Object对待,从而“丢失”自己的实际类型(比如int等) 。获取数据时往往需要转型,效率低,容易产生错误。

作用: 

安全:在编译的时候检查类型安全。

省心:所有的强制转换都是自动和隐式的,提高代码的重用率。

泛型类:

定义类时使用泛型。

1)格式<>

class 类名 <字母列表>{

}

不能用在静态属性、静态方法上。

2)使用:指定具体类型

泛型使用时不能指定基本类型

泛型常见字母:

T: Type表示类型

K V  分别表示键值对

E  表示Element

? 表示不确定的类型

泛型继承

泛型类的子类还可以擦除掉泛型标记

只能:要么同时擦除,要么子类大于等于父类的类型。不能子类擦除,父类泛型。

属性类型:父类中随父类定,在子类中随着子类定。

方法重写:随父类而定。

泛型接口与继承是同理的。

分享一篇大佬写的关于泛型的博客,非常好!

https://www.cnblogs.com/lwbqqyumidi/p/3837629.html

JAVA基础复习与总结<六> 数组_容器_泛型的更多相关文章

  1. Java基础复习笔记系列 四 数组

    Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...

  2. Java基础复习之数组

    Java基础复习之:数组 简介 数组(Array):多个相同数据类型按照一定顺序排列的集合,并使用一个名字命名,通过编号的方式对这些数据进行统一管理 一维数组 一维数组的声明与初始化 int[] id ...

  3. Java基础复习笔记基本排序算法

    Java基础复习笔记基本排序算法 1. 排序 排序是一个历来都是很多算法家热衷的领域,到现在还有很多数学家兼计算机专家还在研究.而排序是计算机程序开发中常用的一种操作.为何需要排序呢.我们在所有的系统 ...

  4. java基础-引用数据类型之一维数组(Array)

    java基础-引用数据类型之一维数组(Array) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组的定义 1>.为什么需要数组 保存一个数据可以定义一个变量,如果要保 ...

  5. 《Java基础复习》-控制执行流程

    最近任务太多了,肝哭我了,boom 参考书目:Thinking in Java <Java基础复习>-控制执行流程 Java使用了C的所有流程控制语句 涉及关键字:if-else.whil ...

  6. 《Java基础复习》—常识与入门

    突然发现自己Java基础的底子不到位,复习! 所记知识会发布在CSDN与博客网站jirath.cn <Java基础复习>-常识与入门 一.Java语言的知识体系图 分为三部分 编程语言核心 ...

  7. java基础复习记录

    java基础复习记录(数组.对象.异常) 数组 数组的定义 数组是相同类型数据的有序集合.如:篮球队就是一个数组,队员球服上有号码,相当于索引.通过某一个的某一个号码来确认是某一个队员.数组中索引从0 ...

  8. Java基础复习笔记系列 九 网络编程

    Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...

  9. Java基础复习笔记系列 八 多线程编程

    Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...

随机推荐

  1. 多项式求导系列——OO Unit1分析和总结

    一.摘要 本文是BUAA OO课程Unit1在课程讲授.三次作业完成.自测和互测时发现的问题,以及倾听别人的思路分享所引起个人的一些思考的总结性博客.本文第二部分介绍三次作业的设计思路,主要以类图的形 ...

  2. Python——使用高德API获取POI(以深圳南山医疗保健服务POI为例)

    以下内容为原创,转载请注明出处. import xlwt #创建Excel,见代码行8,9,11,25,28:CMD下:运行pip install xlwt进行安装 import urllib.req ...

  3. 利用LI标签仿照a中Link进行页面跳转?

    点击LI时仿照A标签进行页面跳转html: <ul> <li link="/school/schooldetail/success_detail?case_id=<! ...

  4. 【easy】437. Path Sum III 二叉树任意起始区间和

    /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...

  5. 统计信息不准导致sql性能下降

    某局的预生产系统一条sql语句20分钟执行完,上线以后2个小时没执行出来,在预生产执行计划是hash join在生产是nested loop,通过awr基表wri$_optstat_tab_histo ...

  6. [MySQL]如何支持utf8格式的UCS4unicode字符

    filed中必须是CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci: 连接时必须set names "utf8mb4": 这是一段P ...

  7. 解释内存中的栈(stack)、堆(heap)和静态区(static area)的用法

    堆区:专门用来保存对象的实例(new 创建的对象和数组),实际上也只是保存对象实例的属性值,属性的类型和对象本身的类型标记等,并不保存对象的方法(方法是指令,保存在Stack中) 1.存储的全部是对象 ...

  8. Arrays类的运用,二分法,数组的复制,命令行参数的运用,二维数组,Object,equals

    /*Arrays jdk中为了便于开发,给开发者提供了Arrays类, 其中包含了很多数组的常用操作.例如快速输出.排序.查找等.*/ import java.util.Arrays; public ...

  9. linux deepin 无线网卡不能用,打不开

    今天安装了NVIDIA的大黄蜂驱动,重启,开机,无线网打不开了, (后来又看到蓝牙功能没了,忙碌中知道了wifi和蓝牙是在一起的,一损俱损!) 折腾了一下午 首先,我上deepin官网找了一圈,没解决 ...

  10. Django—Form、ModelForm

    一.Form form.py from django import forms from django.core.exceptions import ValidationError from djan ...