一、IO部分
1、读写文件:字节流用于复制文件,字符流便于含有中文信息的分析文件
InputStream
read() read(byte[])
OutputStream
write 、write(byte[],start,length)
2、包装模式
3、转换流 InputStreamReader, OutputStreamWriter
4、PrintStream PrintWriter 封装write,重载的print和println方法
5、BufferedReaeder的readLine方法
6、File API 判断文件/目录是否存在,创建文件/目录,获得文件大小、文件删除
7、#深度优先/广度优先遍历目录
二、集合部分
1.接口关系图 think in java
Iterator <--- Collection <--- Map
package cn.techson;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
//循环遍历map的方法
public class CollectionTest {
public static void main(String[] args) {
Map<String, Integer> tempMap = new HashMap<String, Integer>();
tempMap.put("a", 1);
tempMap.put("b", 2);
tempMap.put("c", 3);
// JDK1.4中
// 遍历方法一 hashmap entrySet() 遍历
System.out.println("方法一");
Iterator it = tempMap.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
Object key = entry.getKey();
Object value = entry.getValue();
System.out.println("key=" + key + " value=" + value);
}
System.out.println("");
// JDK1.5中,应用新特性For-Each循环
// 遍历方法二
System.out.println("方法二");
for (Map.Entry<String, Integer> entry : tempMap.entrySet()) {
String key = entry.getKey().toString();
String value = entry.getValue().toString();
System.out.println("key=" + key + " value=" + value);
}
System.out.println("");
// 遍历方法三 hashmap keySet() 遍历
System.out.println("方法三");
for (Iterator i = tempMap.keySet().iterator(); i.hasNext();) {
Object obj = i.next();
System.out.println(obj);// 循环输出key
System.out.println("key=" + obj + " value=" + tempMap.get(obj));
}
for (Iterator i = tempMap.values().iterator(); i.hasNext();) {
Object obj = i.next();
System.out.println(obj);// 循环输出value
}
System.out.println("");
// 遍历方法四 treemap keySet()遍历
System.out.println("方法四");
for (Object o : tempMap.keySet()) {
System.out.println("key=" + o + " value=" + tempMap.get(o));
}
System.out.println("11111");
// java如何遍历Map <String, ArrayList> map = new HashMap <String,
// ArrayList>();
System.out
.println("java 遍历Map <String, ArrayList> map = new HashMap <String, ArrayList>();");
Map<String, ArrayList> map = new HashMap<String, ArrayList>();
Set<String> keys = map.keySet();
Iterator<String> iterator = keys.iterator();
while (iterator.hasNext()) {
String key = iterator.next();
ArrayList arrayList = map.get(key);
for (Object o : arrayList) {
System.out.println(o + "遍历过程");
}
}
System.out.println("2222");
Map<String, List> mapList = new HashMap<String, List>();
for (Map.Entry entry : mapList.entrySet()) {
String key = entry.getKey().toString();
List<String> values = (List) entry.getValue();
for (String value : values) {
System.out.println(key + " --> " + value);
}
}
}
}
使用EL表达式遍历Map集合
<%
Map map=new HashMap();
map.put("a", "1");
map.put("b", "2");
map.put("c", "3");
pageContext.setAttribute("map",map);
%>
<c:forEach items="${map}" var="m">
键:${m.key}
值:${m.value}
</c:forEach>
使用EL表达式遍历Map集合(值存放的是对象)
<%
Person p=new Person();
p.setAddress("aa");
p.setName("aa");
Person p2=new Person();
p2.setAddress("bb");
p2.setName("bb");
Person p3=new Person();
p3.setAddress("cc");
p3.setName("cc");
Map map=new HashMap();
map.put("a", p);
map.put("b", p2);
map.put("c", p3);
pageContext.setAttribute("map",map);
%>
<c:forEach items="${map}" var="m">
${m.key}
${m.value.name}//m.value取得的是对象的内存地址,所以可以直接用m.value.name(name为Person对象的属性)
</c:forEach>
使用struts标签<logic:iterate />遍历
<%
List list=new ArrayList();
list.add("aa");
list.add("bb");
list.add("cc");
Map map=new HashMap();
map.put("a", list);
pageContext.setAttribute("map",map);
%>
<logic:iterate id="m" name="map">
键:${m.key}
<logic:iterate id="childm" name="m" property="value">内层标签的name对应的是外层标签的id,一定要加上property="value"
值:${childm}
</logic:iterate>
</logic:iterate>
2.ArrayList 自动扩容数组
3、LinkedList 双向循环链表
4、使用LinkedList实现队列和栈结构
5、HashMap ---- 哈希算法 、如何进行排重(覆盖对象HashCode和Equals)
6、TreeMap ---- 排重、排序(类实现Compareable接口,覆盖compareTo)
7、List有序,Set无序
遍历list 三种方式(下标、迭代器、foreach),遍历set两种方式(迭代器、foreach)
8、Properties 读取properties文件
9、JDK1.2 线程安全类
Vector和ArrayList
结构有问题的Stack extends Vector类
HashTable和HashMap