数组是相同类型数据的有序集合,数组描述的是相同数据的若干个数据,按照一定的先后次序排列而成,其中,每一个数据都是一个元素,可以通过下标访问,数组默认的下标是从零开始。
数组的长度是确定的,数组一旦被创建,数组的长度也会随之确定,数组的长度是不可变的。
其中的元素必须是统一类型,是int全都是int,不允许出现其他类型,
数组的类型可以是任意类型,包括8大基本数据类型和引用类型
声明一个数组:int []=null; int [] =new [10]; int []={1,2,3,}
其实java中并不存在所谓的多维数组,只有一维数组,多维数组有叫做“数组中的数组”,这也是java的优势所在.
数组的常用方法:
1.copyOfRange (Object[] obj, int from, int to):将指定数组的范围复制到一个新数组
2.hashCode(Object[] a):将指定的数组返回哈希码
3.Arrays.sort(a):数组排序
4.Arrays.file(数组,A,B,C);将数组A到B索引的元素替换为C
冒泡排序法:
public class Test{
public static void main(String[] args){
int[] values={2,1,0,5,9,7,6,3,15,21};
sort(values);
System.out.println(Arrays.toString(values));
}
public static void sort(int[] values){
int temp;
for(int i=0;i<values.length;i++){
for(int j=0;j<values.length-1-i;j++){
if(values[j]>values[j+1]){
temp=values[j];
values[j]=values[j+1];
values[j+1]=temp;
}
}
}
}
}
//从小到到达排序,会先将最大的找出来,放到最后;从大到小排列,会先将最小的找出来放放到最后
//第一次完全把数组遍历一次,把最小的找出来了,再遍历一次会把比最小的大一个的数找出来,以此类推。
在平常的开发中一般会将数组转换为集合,因为数组一旦创建,就不可以再修改.
在图中所有的节点都是实现类,其他都是接口,继承了父接口.
collection接口存在两个子接口,一个是list,一个是set。list接口是有序的,而且允许数据重复,set接口是无须,也不允许 数据重复.
list有3个实现类,分别是Arraylist,linkedlist,vector这3个实现类,此借口用户可以对插入的元素准确的控制,用户可以根剧元素的整数索引去访问元素.list接口在iterator,add,remove,equals和hashcode的方法上加了一些其他的约定超过了collection接口中指定的约定.
Arraylist:是java集合中常用的数据结构,继承自Abstractlist,实现了list接口,底层基于数组实现容量大小动态变化,允许null的存在,同时还实现了RandomAccess,Cloneable,Serializable接口,所以Arraylist是支持快速访问,复制和序列化的.
Arraylist的底层是基于数组来实现容量大小动态变化的.
上面的size是指elementData中实际有多少个元素,elementData.length为集合容量,表示可以容纳多少个元素.默认初始容量大小为10.
Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据 成员,我们不想用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字 transient。当一个对象被序列化的时候,transient型变量的值不包括在序列化的表示中,然而非transient型的变量是被包括进去的
private transsient int modCount=0;
这个变量是定义在Abstractlist中的,记录对list操作的次数。主要使用在iterator,是防止在迭代的过程中集合被修改.
顾名思义,就是集合的意思,java的集合和数学的集合一样,满足集合的无序性,确定性,单一性,所以可以很好的理解,set是无序的,不可重复的,set只允许存在一个null;
set就相当于一个罐子,丢进的set元素没有先后的差别。
set判断两个元素相同用的不是“==”,而是根据equals方法,
map接口不是collection的子接口或者实现类,map是一个接口;
Map用于保存映射关系的数据,每个entry都持有键----值两个对象,在Map中,value可能会重复,但是键不允许重复;
map中可以存在多个value为空,但是只允许一个键为空
1.hashmap:和hashset不能保存元素的顺序一样,hashmap也不能保证键--值对的顺序,通过hashMap的值.equals进行比较,同时两个key的hashcode值也必须相等;
2.hashTable:一个古老的map实现类,线程安全。
原文:https://www.cnblogs.com/wmw1226/p/13253190.html