包含vector,ArrayList,Linkedlist 1.有序的集合(存储和取出元素顺序相同) 2.允许存储重复的元素 3.有索引,可以使用普通的for循环遍历
1.不允许存储重复元素 2.没有索引(不能使用普通的for循环遍历) 3.无序的集合(存储和取出元素的顺序有可能不一致)
定义的是所有单列集合中共性的方法 所有的单列集合都可以使用共性的方法 没有带索引的方法
常用方法 1.boolean hasNext() 如果仍有元素可以迭代,则返回true 判断集合中还有没有下一个元素,有就返回true,没有就返回false 2.E next() 返回迭代的下一个元素 取出集合中的下一个元素
使用步骤 1.使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态) 2.使用Iterator接口中的方法hasNext判断还有没有下一个元素 3.使用Iterator接口中的方法next取出集合中的下一个元素。
1.底层使用的也是迭代器,使用for循环的格式,简化了迭代器的书写 Collectionextends Iterable:所有的单列集合都可以使用增强for public interface Iterable实现这个接口允许对象成为“foreach”语句的目标
增强for循环:用来遍历集合和数组 格式:for(集合/数组的数据类型 变量名:集合名/数组名){ sout(变量名); }
一种未知的数据类型,当我们不知道使用什么数据类型的时候,可以使用泛型,泛型也可以看出是一个变量,用来接收数据类型。 E e:Element元素 T t:Type类型 ArrayList集合在定义的时候,不知道集合都会存储什么类型的数据,所以类型使用泛型。 当创建集合对象的时候,就会确定泛型的数据类型。(会把数据类型作用参数传递,数据类型赋值给泛型E)
使用泛型 好处: 1.避免了类型转换的麻烦,存储的是什么类型,取出的就是什么类型 2.把运行期异常(代码运行后会抛出的异常),提升到了编译器(写代码的时候会报错) 弊端: 1.泛型是什么类型,只能存储什么类型的数据 不使用泛型 好处: 1.集合不使用泛型,默认的类型就是Object类型,可以存储任意类型的数据 弊端: 1.不安全,会引发异常
泛型通配符:? ?代表任意的数据类型 使用方式: 1.不能创建对象使用 2.只能作为方法的参数使用
接口特点: 1.有序的集合,存储元素和取出元素的顺序是一致的(队列) 2.有索引,包含了一些带索引的方法 3.允许存储重复的元素 对象数组
一、ArrayList 特点:数组的长度不可以发生改变,但是ArrayList的长度是可以随意变化的. 格式:ArrayList E为泛型,即装在集合中的所有元素,全都是统一的类型。泛型只能是引用类型,不能是基本类型。 原因:集合中只能保存地址值,而基本数据类型没有地址值。 注意: 直接打印ArrayList对象得到的是内容而不是地址值,封装好的。
常用方法:
二、LinkedList集合 特点: 1.底层是一个链表结构:查询慢,增删快 2.里面包含了大量操作首尾元素的方法。 注意:使用LinkedList集合特有的方法,不能使用多态。
1.一个不包含重复元素的Collection。 2.无索引,没有带索引的方法,也不能使用普通的for遍历循环。 3.由哈希表(HashMap实例)支持,查询速度非常快。 4.是一个无序的集合,存储元素和取出元素的顺序有可能不一致
哈希值:是一个十进制的整数,由系统随机给出(就是对象的地址值,是一个逻辑地址,是模拟出来的地址,不是数据实际存储的物理地址。在Object类中有一个方法,可以获取对象的哈希值。
int hashcode()返回该对象的哈希码值。
哈希表 jdk1.8之前:哈希表 = 数组 + 链表 jdk1.8之后:哈希表 = 数组 + 链表 + 红黑树(提高查询速度)
数组结构:把元素进行分组,相同哈希值的元素是一组 链表/红黑树结构:把相同哈希值的元素连接到一起 (如果链表长度超过8位,就会把链表转换为红黑树 )
set集合无法存储重复元素的原理 Set集合在调用add方法的时候,add方法会调用元素的hashCode方法和equals方法,判断元素是否重复
底层是一个哈希表(数组+链表+红黑树)+链表:多了一条链表(记录元素的存储顺序),保证元素有序
jdk1.5之后出现的新特性 使用前提: 当方法的参数列表数据类型已经确定,但是参数的个数不确定,就可以使用可变参数 使用格式: 定义方法时使用 修饰符 返回值类型 方法名(数据类型…变量名){} 原理: 可变参数底层就是一个数组,根据传递参数个数不同,会创建不同长度的数组,来存储这些参数,传递的参数个数可以是零个,1,2,3,多个。
注意事项: 1.一个方法的参数列表,之能有一个可变参数 2,如果方法的参数有多个,那么可变参数必须写在参数列表的末尾
Collections.addall(列表名,多个元素) //添加多个元素 Collections.shuffle(列表名) //随机打乱 Collections.sort(列表名) //默认升序排序 想要对对象进行排序,要对Comparable函数进行重写
特点: 1.Map集合是一个双列集合,一个元素包含两个值(key:value) 2.Map集合中的元素,key和value可以相同,也可以不同。 3.Map集合中,key是不可以重复的,value是可以重复的。 4.key:value一一对应
HashMap特点: 1.HashMap集合底层是哈希表,查询的速度特别快 2. 是一个无序的集合,存储元素和取出元素的顺序有可能不一致。
LinkedHashMap: 1.底层是一哈希表+链表,所以是一个有序的集合
遍历方式 map集合的第一种遍历方式:通过键找值的遍历方式 map集合的第二种遍历方式:使用Entry对象遍历