1.集合
Collection接口定义一系列操作对象集合的方法,它有Set和List两个子接口,我们往往会利用Set和List进行数据的有效管理
2.在List的接口中,我们常常使用ArrayList的实现类
ArrayList常用方法:
add(对象) -----将指定的对象加入当期的List对象
add(下标,对象)----将指定的对象加入当前的对象
set(下标,对象)------在指定下标处插入指定的对象,覆盖该下标处原有的对象
size()------ 返回当前List集合对象的长度
get(下标)------返回指定下标位置的元素,下标从0开始
contains(对象)----判断当前集合中是否包含传入的对象返回boolean值,注意:判断是否包含,看的是传入的对象是否和当前集合中的某个对象相互equals。
remove(对象)-----在当前集合中删除传入的对象。
注意:传入的对象能不能删除取决于它和当前集合中的某个对象是否相互equals。
Vector类和ArrayList类一样,都是实现了List接口的实现类,List接口中定义的各种方法,它们都可以使用。不同之处在于vector是线程同步的,而ArrayList是线程不同步的。
我们可以使用循环来遍历当前的集合,对于增强的for循环forEach同样适用于集合的遍历
3.Iterator
迭代器,它可以循环遍历我们的集合对象,使用集合对象.iterator()得到当前集合的迭代器。
在迭代器中使用next()可以依次来迭代每一个元素
可以使用hasNext()来判断是否已经迭代到了最后一个元素(迭代到最后返回false,没有返回true)
通常我们会在循环条件中使用hasNext()方法
在循环体中使用next()方法
我们还可以使用remove()来删除集合中的每一个元素
注意:在remove之前必须首先调用异常next()
而且每一次迭代器使用完毕,就不可以再重复使用
4.Set接口也是Collection接口的子接口,Set中的元素是无序(无序可用于排重)存放的。它有一些常用的实现类,例如:HashSet
Set接口的方法:
add(对象)----插入对象
我们不可以通过get(下标)得到具体的某一个元素
5.Set和 List有何区别
①List是有序的,Set是无序的
②List是可重复的,Set是不可重复的
6.ArrayList和LinkedList之间的区别?
ArrayList底层是数组,它读的快改的慢
LinkedList底层是链表,它读的慢改的快
7.Map
Map接口用来存储 键值对对象,键和值分别都是一个对象,它是一对一存储的,键不能重复
键值对又称key-value
Map接口中常用的实现类是HashMap
Map接口常用方法:
put(键,值)------将一对键值对象存入当前Map
size()-----返回当前Map中键值对的个数
containsValue(键)-----判断当前Map中是否包含指定Value的键值对
isEmpty()-----判断当前Map是否为空
get(键)-----根据传入的键得到对应的值
putAll(Map)-----将当前Map与传入的Map合并
remove(键)-----根据传入的键删除指定的键值对
8.HashMap和HashTable的区别:
HashMap是线程不同步的,所以性能稍高
HashTable是线程同步的,所以性能稍差
9.自动打包自动解包(自动装箱,自动拆箱)
从1.5的jdk开始,凡是需要基本数据类型包装类对象的地方,只需要给基本数据类型数值即可,jdk会自动封装对象
凡是需要基本数据类型的地方,只需要给包装类对象即可,jdk会自动取出对象中的数值
10.Collections
Collections是一个集合的帮助类,里面包含了各种对集合的操作的方法
sort(List对象)-----可以实现对List的排序
11.泛型
在定义集合的时候,使用一对<>同时定义集合中对象的类型
好处:增强程序的可读性和稳定性
好处:增强程序的可读性和稳定性
注意:在定义Iterator的时候也可以使用泛型来指定其中的对象类型
注意:Map中的键值对,都可以指定对应的泛型
12.泛型中可以使用问号
带有具体泛型集合中的对象不能赋给其泛型的集合引用
可以使用问号在泛型中表示通配符来让该集合引用指向任何泛型的集合对象