java 面试 collection IO等基本类
来源:互联网 发布:差额计算法公式 编辑:程序博客网 时间:2024/06/11 02:36
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; } }
- java 面试 collection IO等基本类
- Java面试--io
- JAVA面试--IO
- Java面试--io
- 【java面试】IO流
- 【Java基础15_1】Collection类及其基本用法
- java面试等
- Java IO 技术之基本流类
- Java.io流的基本常用类
- java基本IO
- Java IO 基本
- java基本IO操作
- java--IO流基本
- Java IO基本模型
- 【面试之java io流】IO
- Java面试基本题
- JAVA基本面试
- Java基本数据类型面试
- java比较器Comparator与Comparable
- cannot resolve method 'putExtra(android.os.bundle)' error
- Android SpannableString Example
- idea "Usage of API documented as @since 1.6+"的解决办法
- NSMutableDictionry保存的数据乱,和NSArray结合得出自己想要的数据
- java 面试 collection IO等基本类
- rxjava2.x
- 08_Qt的IO、内存映射
- Java 注解的定义
- asp.net core 对HttpContext 的扩展
- 01_BootStrap——简介
- 设计模式读书笔记(二)设计模式之创建模式
- Python安装方法之一:anaconda
- ubantu生成lm命令(按时间排)