集合与泛型
1.List集合
1.数据有序,不唯一
2.ArrayList集合:实现长度可变数组,在内存中分配连续储存空间,遍历元素和随机访问元素效率高;
3.LinkedList集合:采用链表储存方式,插入删除数据效率较高;
添加元素为add()方法;
2.set集合
1.数据无序,唯一
2.HashSet集合
3.TreeSet集合
录入重复数据时会将原来的数据覆盖,采用的时hashcode()和equals()方法,保证录入数据的唯一性;添加数据为add()方法;
自定义对象排序:
1.封装类中实现Comparable接口传入参数为该封装类;
2.实现接口
3.自定义接口中的排列顺序,如:
int num=this.age-o.age;
int num2=num==0?this.name.compareTo(o.name):num;
return num2;
上述为当年龄相同时按名字排序,字符串比较输出数值为compareTo();
3.Map集合
1.储存一对键值对象
2.HashMap集合
3.TreeMap集合
添加数据为put()方法;
HashMap集合中存储的是地址,地址相对应的值存于堆栈中,该集合采用数组链表联合使用,将键值转化为hash值,对数组长度取余数,得到下标,当下标重复时则该下标位置的地址变为链表的首地址;
put(key,value){
int hashcode=key.hashcode();取键的哈希值
int index=hashcode%table.length;取余得下标
table[index]=new Entry(key,value,table[index]);将该位置的下标替换为一个新建的Entry对象(放入key和value,并插入table[index]的位置(首位置),将后面的数据挤下去,保证每次插入都是第一个位置)
}
4.泛型
1.List list=new ArrayList(){基本格式}
2.定义的泛型,后就限定了集合的适用对象,可以不用强转直接使用;
2020年6月28日