java 面试 collection IO等基本类

collection 包括
第一大块:List 有序,可重复
ArrayList 底层是维护了一个Object数组实现的。 特点: 查询速度快,增删慢。
LinkedList 链表数据结构实现的, 特点: 查询速度慢,增删快。
Vector Object的数组实现,Vector是线程安全的,操作效率低
第二大块: Set 无序,不可重复
HashSet 哈希表来支持的,特点: 存取速度快.
TreeSet 元素具备自然顺序 的特性,那么就按照元素自然顺序的特性进行排序存储

IO 包括
字符流 reader 分为 bufferedReader
InputStreamReader FileReader
StringReader
PipedReaser
ByteArrayReader
FilterReader PushbacjReader
Writer 分为 BufferedWriter
OutputStreamWriter fileWriter
PrinterWriter
StringWriter
PipedWriter
charArrayWriter
FileterWriter
字节流 InputStream 分为 FileInputStream
FileterInputStream BufferedInputStream DataInputStream PushbakInputStream
ObjectInputStream
PipedInputStream
SequenceInputStream
StringBufferInputStream
ByteArrayInputStream
OutputStream分为 FileOutputStream
FilterOutputStream BufferOutputStream DataOutputStream PrintStream
ObjectOutputStream
PipedOutputStream
ByteArrayOutputStream

import java.io.*;    
public class FileCopy {  
  public static void main(String[] args) {  
     // TODO自动生成的方法存根  
     byte[] buffer=new byte[512];   //一次取出的字节数大小,缓冲区大小  
     int numberRead=0;  
     FileInputStream input=null;  
     FileOutputStream out =null;  
     try {  
        input=new FileInputStream("D:/David/Java/java 高级进阶/files/tiger.jpg");  
        out=new FileOutputStream("D:/David/Java/java 高级进阶/files/tiger2.jpg"); //如果文件不存在会自动创建      
        while ((numberRead=input.read(buffer))!=-1) {  //numberRead的目的在于防止最后一次读取的字节小于buffer长度,  
           out.write(buffer, 0, numberRead);       //否则会自动被填充0  
        }  
     } catch (final IOException e) {  
        // TODO自动生成的 catch 块  
        e.printStackTrace();  
     }finally{  
        try {  
           input.close();  
           out.close();  
        } catch (IOException e) {  
           // TODO自动生成的 catch 块  
           e.printStackTrace();  
        }     
     }  
  }   
}
package com.hxw.io;  

import java.io.FileNotFoundException;  
import java.io.FileReader;  
import java.io.IOException;  
import java.io.PrintWriter;  
import java.nio.CharBuffer;  
public class Print {     
/** 
 * @param args 
 */  
public static void main(String[] args) {  
    // TODO自动生成的方法存根  
    char[] buffer=new char[512];   //一次取出的字节数大小,缓冲区大小  
    int numberRead=0;  
    FileReader reader=null;        //读取字符文件的流  
    PrintWriter writer=null;    //写字符到控制台的流    
    try {  
       reader=new FileReader("D:/David/Java/java 高级进阶/files/copy1.txt");  
       writer=new PrintWriter(System.out);  //PrintWriter可以输出字符到文件,也可以输出到控制台  
       while ((numberRead=reader.read(buffer))!=-1) {  
          writer.write(buffer, 0, numberRead);  
       }  
    } catch (IOException e) {  
       // TODO自动生成的 catch 块  
       e.printStackTrace();  
    }finally{  
       try {  
          reader.close();  
       } catch (IOException e) {  
          // TODO自动生成的 catch 块  
          e.printStackTrace();  
       }  
       writer.close();       //这个不用抛异常  
    }  

}    
} 
网页输出excel:
List<ImportBackwardPhoneModel> users = new ArrayList<ImportBackwardPhoneModel>();
        ImportBackwardPhoneModel phoneModel = new ImportBackwardPhoneModel();
        phoneModel.setUserId("12341234");
        users.add(phoneModel);
        Map<String, String> columns = new HashMap<String, String>();
        columns.put("0userId", "user_id");
        Map<String, Object> data = new HashMap<String, Object>();
        data.put("listData", users);
        data.put("columns", columns);
ByteArrayOutputStream baos = ExcelUtil.getExcelUtil().objListToXlsxInMemory(data);
response.setHeader("Content-type", "text/html;charset=UTF-8");
        response.setCharacterEncoding("utf-8");
        response.setContentType("multipart/form-data");
        response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);
        response.addHeader("Content-Length", String.valueOf(baos.size()));
        OutputStream os = response.getOutputStream();
        os.write(baos.toByteArray());
        os.close();
        baos.close();
生成ByteArrayOutputStream
/**
     * 
     * @author chad.chen
     * @param data
     *            List存放对象数据(listData)
     */
    public ByteArrayOutputStream objListToXlsxInMemory(Map data) {
        ByteArrayOutputStream baos = null;
        Map<String, String> columns = (Map<String, String>) data.get("columns");
        List listData = (List) data.get("listData");
        Object[] keys = columns.keySet().toArray();
        String[] ziDuanKeys = new String[keys.length];
        for (int k = 0; k < keys.length; k++) {
            String temp = keys[k].toString();
            String str = temp.substring(0, 2);
            Pattern p = Pattern.compile("\\d(\\d)?");
            Matcher m = p.matcher(str);
            if (m.matches()) {
                int xuHao = Integer.valueOf(temp.substring(0, 2));
                ziDuanKeys[xuHao] = temp.substring(2);
            } else {
                int xuHao = Integer.valueOf(temp.substring(0, 1));
                ziDuanKeys[xuHao] = temp.substring(1);
            }
        }
        try {
            SXSSFWorkbook wb = new SXSSFWorkbook(1000);
            SXSSFSheet sheet = wb.createSheet();
            for (int i = 0; i < listData.size() + 1; i++) {
                SXSSFRow row = sheet.createRow(i);
                for (int j = 0; j < ziDuanKeys.length; j++) {
                    SXSSFCell cell = row.createCell(j);
                    if (i == 0) {
                        sheet.setColumnWidth(j, 6000);
                        cell.setCellValue(columns.get(j + ziDuanKeys[j]));
                    } else {
                        Object obj = listData.get(i - 1);
                        String ziDuanName = (String) ziDuanKeys[j];
                        ziDuanName = ziDuanName.replaceFirst(ziDuanName.substring(0, 1),
                                ziDuanName.substring(0, 1).toUpperCase());
                        ziDuanName=getZiduanName(ziDuanName);
                        Class clazz = Class.forName(obj.getClass().getName());
                        Method[] methods = clazz.getMethods();
                        Pattern pattern = Pattern.compile(ziDuanName);
                        Matcher mat = null;
                        for (Method m : methods) {
                            mat = pattern.matcher(m.getName());
                            if (mat.find()) {
                                Object shuXing = m.invoke(obj, null);
                                if (shuXing != null) {
                                    cell.setCellValue(shuXing.toString());// 这里可以做数据格式处理
                                } else {
                                    cell.setCellValue("");
                                }
                                break;
                            }
                        }
                    }
                }
            }
            baos = new ByteArrayOutputStream();
            wb.write(baos);// 写入File
            wb.close();
            return baos;
        } catch (Exception e) {
            logger.error(e.getMessage());
            return null;
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值