java web必须掌握的基础知识

一、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

原文地址:https://www.cnblogs.com/biggestfish/p/2991398.html