【学习笔记】
--------------------------------------------------------------------new对象===>加数据====>输出------------------------------------------------------------------
一、【集合框架】:JDK提供的一组接口,实现类,工具类 用到最多的就是查询 二进制向右移一位 减少一半(10右移一位为5)
Collection(接口):可以认为是个容器,存储单个元素集合的容器
List(接口):保证元素的顺序,允许元素重复
【重点】ArrayList(顺序表,数组)(子类):满足接口条件,特点:大小可变
LinketList(链表)(子类):以链表的方式存储数据,(列:环形数据,下一个上一个,当需要查找的位置大于长度一半,会是用回退查找(从后面开始))
ArrayList与LinketList的区别:1、前者是用数组存放元素,后者是链表存储。
2、检索数据时,ArrayList快(顺序,有脚标当索引) LinketList慢(一个一个对比)
3、增加数据和删除数据时,ArrayList慢 LinketList块(只需要改两个位置的指向)
----------------------【两者区别:是否顺序,是否重复】--------------------
Set(接口):不保证顺序,不能重复
HashSet(子类):无索引
例子:
HashSet<Integer>qq = new HashSet<Integer>();
qq.add(12);
qq.add(34);
System.out.println(qq);//用size循环也行
【面试】 判断数据重复的标准:如果要保证不同对象里元素值不重复,需要重写两个方法:equals 和 hashCode两个方法 (缺一不可)。
------------------------------------------------------------------------------------------------------------------------------------------------------
Map(映射)(接口):存储键值(Key-value)对;
HashMap(子类)
importjava.util.Collection;
importjava.util.HashMap;
importjava.util.Set;
importjava.util.Map.Entry;//导入包
HashMap<String,String> map = new HashMap<String, String>();
map.put("a","Aasdac");
map.put("b","b1");
map.put("b","b2");// 当键都为b时 会覆盖掉原有值b1
map.put(null,null);// 可以为null
System.out.println(map.get(null));
-----------------------------------------------
//第一种遍历方式
Set<String>keys = map.keySet();
for(String key : keys) {
System.err.println(key+ "=" + map.get(key));
}
//第二种遍历方式
Collection<String>values = map.values();
for(String value : values) {
System.out.println(value);
}
//第三种遍历方式
Set<Entry<String,String>> entries = map.entrySet();
for(Entry<String, String> entry : entries) {
System.out.println(entry.getKey()+ "=" + entry.getValue());
}
课堂练习:往ArrayList中放若干整形,计算所有正数之和
只做了解:vector,hashtable,
【工具类:Collections,Arrays(数组)】
//递归
publicint getNum(int index){
}
1,1,2,3,5,8,13,21,34,54 传一个位置,返回该位置的数字