一.HashMap
字符串aaaaabbbbcccdddee
要求在控制台输出a(5)b(4)c(3)d(3)e(2)
要求在控制台输出a(5)b(4)c(3)d(3)e(2)
public class test1 { public static void main(String[]args) { //键盘录入字符串 Scanner sc=new Scanner(System.in); System.out.println("请输入一个字符串"); String s=sc.nextLine(); //将字符串转化为字符数组 char[]chs=s.toCharArray(); //创建一个HashMap集合 HashMap<Character,Integer>map=new HashMap<Character,Integer>(); //遍历数组,判断字符是否是第一次添加到集合,分情况 //put方法的返回值是个特点,以前与key关联的值,如果没有针对key的映射关系,即 //当前键值映射关系是第一次出现的,会返回null for(Character ch:chs) { //获取map集合每个值 Integer value=map.get(ch); if(value==null) { map.put(ch, 1); }else { value++; map.put(ch, value); } } //创建字符串缓冲区 StringBuffer sb=new StringBuffer(); //遍历HashMap集合 Set<Character>set=map.keySet(); for(Character key:set) { Integer value=map.get(key); sb.append(key).append("(").append(value).append(")"); } String s2=sb.toString(); System.out.println(s2); } }
二.Collections
Collection和Collections的区别:
Collection:顶层次单列集合的根接口,它是一个集合,是一个接口
Collections:是针对集合操作的工具类,有一些功能:随机置换,集合里面的二分查找,将集合的元素进行反转
集合的二分查找
public static <T> int binarySearch(List<T> list, T key)
static T max(Collection coll):获取集合中的最大值
public static void reverse(List<?> list):将集合中的元素顺序反转
public static void shuffle(List<?> list):将集合中的元素打乱
public static void sort(List<T> list)
Collection:顶层次单列集合的根接口,它是一个集合,是一个接口
Collections:是针对集合操作的工具类,有一些功能:随机置换,集合里面的二分查找,将集合的元素进行反转
集合的二分查找
public static <T> int binarySearch(List<T> list, T key)
static T max(Collection coll):获取集合中的最大值
public static void reverse(List<?> list):将集合中的元素顺序反转
public static void shuffle(List<?> list):将集合中的元素打乱
public static void sort(List<T> list)
public class test1 { public static void main(String[]args) { //创建一个集合 ArrayList<student>set=new ArrayList<student>(); student s1=new student("gaoyuanyuan",23); student s2=new student("gaoyuanyuan",23); student s3=new student("zhaoyouting",32); student s4=new student("liushishi",25); set.add(s1); set.add(s2); set.add(s3); set.add(s4); //比较器排序 Collections.sort(set,new Comparator<student>() { @Override public int compare(student s1, student s2) { int num=s1.getAge()-s2.getAge(); int num2=num==0?s1.getName().compareTo(s2.getName()):num; return num2; } }); //遍历集合并输出 for(student s:set) { System.out.println(s.getName()+" "+s.getAge()); } } }
三.异常处理
异常:
编译时期异常:只要出现的不是运行时期异常,统称为编译时期 日期的文本格式---解析 java.util.Date类型:ParseException:解析异常
编译时期异常:开发者必须处理!
运行时期异常:RuntimeException
编译通过了,但是开发者代码不严谨
编译时期异常:只要出现的不是运行时期异常,统称为编译时期 日期的文本格式---解析 java.util.Date类型:ParseException:解析异常
编译时期异常:开发者必须处理!
运行时期异常:RuntimeException
编译通过了,但是开发者代码不严谨
异常的处理分为两种:
1)try...catch...finally (标准格式) :捕获异常
2)throws ... 抛出异常
1)try...catch...finally (标准格式) :捕获异常
2)throws ... 抛出异常
1.try..catch
public static void main(String[]args) { int a=10; int b=0; try { System.out.println(a/b); }catch(ArithmeticException e) { System.out.println("错误"); } }
多异常捕获
public static void main(String[]args) { try { int a=10; int b=0; System.out.println(a/b); }catch(IndexOutOfBoundsException|NumberFormatException |ArithmeticException e) { System.out.println("可能发生这些异常其中之一"); //e=new ArithmeticException("test"); //捕获多异常时,异常变量 默认被final修饰,不可更改 // }catch(Exception e){ e=new RuntimeException("test"); //捕获一种类型异常时,异常变量没有被final修饰,可以更改 e=new ArithmeticException("hello"); } }
编译时期异常和运行时期异常的区别?
编译时期:开发者必须进行显示处理,不处理,编译不能通过,
运行时期异常:无需进行显示处理,可以像编译时期一样进行处理
public String getMessage() :消息字符串
public String toString(): 异常的简短描述 ":
":由冒号和空格组成
public void printStackTrace():返回值void 直接调用, 包含了消息字符串,还有": "
信息描述,具体出现异常的代码定位以及定位的源码上
四.File类
File类:表示文件或者目录的路径的抽象表现形式. IO流就是对文件进行操作的
不管是文件还是目录都是通过File进行操作的,File能新建,删除,重命名文件名和目录
File不能访问文件内容本身,如果需要访问文件本身内容,需要用IO流
public File(String pathname)
表示pathname的抽象路径表现的形式 (开发中使用这种方式)
public File(String parent,String child)
根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例
public File(File parent, String child)
根据一个file对象和一个文件路径来构造File实例
不管是文件还是目录都是通过File进行操作的,File能新建,删除,重命名文件名和目录
File不能访问文件内容本身,如果需要访问文件本身内容,需要用IO流
public File(String pathname)
表示pathname的抽象路径表现的形式 (开发中使用这种方式)
public File(String parent,String child)
根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例
public File(File parent, String child)
根据一个file对象和一个文件路径来构造File实例
public static void main(String[]args) { //public File(String pathname):表示pathname的抽象路径表现的形式 File file=new File("e:\\demo\\a.txt"); System.out.println(file); File file2=new File("e:\\demo","a.txt"); System.out.println(file2); File file3=new File("e:\\demo"); File file4=new File(file3,"a.txt"); System.out.println(file4); }跟创建相关的功能:
public boolean createNewFile():
创建文件,当文件不存在的时候,创建此抽象路径下的文件
本身方法异常:IOException
创建文件的前提:文件夹一定要存在,如果不存在,IOException
public boolean mkdir():创建一个文件夹,如果文件夹存在,不创建
public boolean mkdirs():创建文件夹,如果父目录不存在,会创建此目录
public static void main(String[]args) throws IOException { File file=new File("d:\\demo"); System.out.println(file.mkdir()); File file2=new File("d:\\demo\\a.txt"); System.out.println(file2.createNewFile()); File file3=new File("d:\\aaa\\bbb\\ccc"); System.out.println(file3.mkdirs()); }
删除功能 public boolean delete() :删除文件或者文件夹(目录不能是空的)
逐一删除文件或者目录
逐一删除文件或者目录
public static void main(String[]args) { //删除文件 File file=new File("d:\\demo\\a.txt"); System.out.println(file.delete()); //删除文件夹 File file2=new File("d:\\demo"); System.out.println(file2.delete()); //删除aaa\\bbb\\ccc File file3=new File("d:\\aaa\\bbb\\ccc"); System.out.println(file3.delete()); File file4=new File("d:\\aaa\\bbb"); System.out.println(file4.delete()); File file5=new File("d:\\aaa"); System.out.println(file5.delete()); }
绝对路径:c:\\xxx\\xxx.txt
相对路径:a.txt
File 的重命名功能:
public boolean renameTo(File dest)重新命名此抽象路径名表示的文件。
如果路径名一致的情况,那么只是重命名
如果两次路径名称不一致,那么不只是重命名,并且剪切
相对路径:a.txt
File 的重命名功能:
public boolean renameTo(File dest)重新命名此抽象路径名表示的文件。
如果路径名一致的情况,那么只是重命名
如果两次路径名称不一致,那么不只是重命名,并且剪切
public static void main(String[]args) { //路径一样,重命名 File file = new File("d:\\图片.jpg") ; File newFile =new File("d:\\图片图片.jpg") ; System.out.println("renameTo():"+file.renameTo(newFile)); System.out.println("-------------------------"); //路径不一样,重命名并剪切 File file2 = new File("d:\\图片图片.jpg") ; File file3 = new File("e:\\图片.jpg") ; System.out.println("renameTo():"+file2.renameTo(file3)); }
File类的获取功能:
public String getAbsolutePath():获取抽象文件的绝对路径
public String getPath():获取相对路径的字符串
public String getName()返回由此抽象路径名表示的文件或目录的名称
public long length()返回由此抽象路径名表示的文件的长度。
public long lastModified():文件最后一次被修改的时间(时间毫秒值)
public String getAbsolutePath():获取抽象文件的绝对路径
public String getPath():获取相对路径的字符串
public String getName()返回由此抽象路径名表示的文件或目录的名称
public long length()返回由此抽象路径名表示的文件的长度。
public long lastModified():文件最后一次被修改的时间(时间毫秒值)
public static void main(String[]args) throws IOException { File file1=new File("d:\\demo"); file1.mkdir(); File file=new File("d:\\demo\\a.txt"); file.createNewFile(); System.out.println(file.getAbsolutePath()); System.out.println(file.getPath()); System.out.println(file.getName()); System.out.println(file.length()); System.out.println(file.lastModified()); }
File的高级功能
public String[] list() :获取当前某个路径下的所有的文件夹以及文件名称的字符串数组
public File[] listFiles() :获取当前某个路径下所有的文件夹以及文件的File数组
public String[] list() :获取当前某个路径下的所有的文件夹以及文件名称的字符串数组
public File[] listFiles() :获取当前某个路径下所有的文件夹以及文件的File数组
public static void main(String[]args) { //表示e盘 File file=new File("e:\\"); String[]str=file.list(); for(String s:str) { System.out.println(s); } File[] files=file.listFiles(); for(File f:files) { System.out.println(f); } }