集合框架的概念尤为重要,在项目中的地位就好比鱼和水,重要性不言而喻。
对象和集合的熟练运用才能在往后的学习中占据主动性。
灵魂画师上线: 集合框架常用的接口和类
数组:把很多类型相同,大小固定的数组放在一起。优点:类型相同 缺点:大小固定
集合:把很多数集合在一起。优点:类型相同,大小可变 缺点:类型多样
集合+泛型 优点:类型相同,大小可变,类型指定。
重要的接口和类
接口:Collection :类似于数组。 Map:key——value
Collection 重要的子接口:
①List:有序可重复的集合,支持下标操作
②Set:无序不可重复的集合,不支持下标操作
③Queue:队列(先进先出,后进后出),针对java内存操作
ArrayList的特点、常用方法、遍历方式、增删改查
List接口下的ArrayList类:可变长数组
创建:List<Object> list = new ArrayList<>(); //菱形语法
特点:有序可重复
方法:
size() 集合大小
add(对象)添加对象
get(下标)根据下标查找对象
iterator()迭代器
遍历:(sys 是打印的简写,Alt+/自动补全)
①for for(int i=0;i<list.size();i++) sys list.get(i)
②forEach for(Objcet o:list) sys o
③通用迭代器 Iterator it = list.iterator(); while(it.hasNext()){ sys it.next()} 如果有下一个,就输出。
④列表迭代器 ListIterator lit = list.listIterator(); while(lit.hasNext())正向 while(lit.hasPrevious)逆向
泛型:<>
规定放入集合中元素的具体类型,只能使用引用数据类型。
增删改查:
增:list.add(1,"aa");在下标为1的位置插入字符串aa。(可以为对象类型)
删:list.remove(3);按下标删
list.remove("aa");按元素删,重复元素删除第一个
改:list.set(0,"bb");根据下标修改
查:就是遍历啦
LinkedList和ArrayList和Vector的区别
ArrayList是list接口可变长数组的实现,查找、修改的效率高
LinkedList是list接口链表的实现,包含了队列的操作,删除和增加效率高。
Vector:ArrayList是Vector线程不安全的体现。vector效率低。(jdk1.0)
HashSet类的特点、增删改查、遍历
HashSet:set的通用实现
特点:无序、不可重复,可null。
set的增删改查:
add("aa")如果有重复,放弃重复的元素
remove("aa")删除指定的元素。(没有下标)
修改分两步——先删除,再添加
遍历:
①foreach循环 for(Object o:set)
②迭代器循环 Iterator it = set.iterator(); while(it.hasNext)
TreeSet类的特点、排序
特点:排序,不可重复,不可null。可以根据元素的自然顺序进行排序。
排序:①只有可以比较大小的对象才可以放入TreeSet。②一定要放同类元素。(边放边排)
Map接口的特点、实现类、增删改查、遍历
Map:体现键值对关系。(key——value)
特点:
①一个键对应一个值,一个值能对应N个键。
②放入map中的是键值对,除键的类型是整形,其他类型都是随机顺序。
重要的实现类:HashMap、TreeMap、HashTable、Properties
增删改查:查就是遍历啦*2
增:map.put(键,值)
删:map.remove(键)
改:map.put(键,值)//覆盖
遍历:
①直接遍历值集合。Collection values = map.values() for(Object o:values){}
②先遍历键。(核心)
Set<Object> keySet = map.keySet();
Iterator<Object> it = keySet.iterator();
while(it.hasNext()){
system.out.println("key:"+it.next()+"\tvalue:"+map.get(it.next()));
}
③先遍历值。(不常用)
Set entrySet = map.entrySet(); for(Object o:entrySet){sysout o}
HashMap的创建、特点
创建:Map<key,value> map = new HashMap<>();
特点:
键—无序,不可重复,可null。
值—没有约束。线程不安全。
TreeMap的特点、注意点
特点:
可以根据key的自然顺序进行排序。
注意点:
①key的类型要能排序
②key必须是同一类型
额外:HashTable是HashMap的线程安全实现,HashMap效率更高
你以为掌握这些就完了吗?
最后两个点:泛型和比较器
泛型的定义、注意点、分类、作用
定义:运行时类型(调用时,决定属性的类型)、参数化类型
注意点:
①泛型必须先定义后使用
②泛型可以定义N个,用【,】隔开
③泛型只接受引用数据类型
分类:
①泛型类:在类名后,使用<泛型类型>
栗:public class Container<E> { }
②泛型方法:一般配合泛型类使用
③泛型接口:接口中可使用泛型,这个接口的实现类必须指明泛型的具体类型。
泛型作用:
①在使用时,确定具体的类型
②结合集合类型,规定放入集合中元素的具体类型。
使用:
1.Contanier<String> cr = new Contanier<String>();
2.Contanier<String>cr = new COntanier<>();JDK1.7以上,菱形语法。前面写完,后面自动匹配。
关于java基础,还剩两个大点——流和反射 要总结。
后面会记录一些短小、精悍的小技巧、小规范和小知识点。
吃饭了,冲啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊