Map集合:Map集合实际上就相当于一个多行两列的表格
Map集合的最重要的特征就是里面的值都是以键-值对(key-value)的方式出现的
put()方法:往map集合中添加值
map.get(Object key):通过key值拿到对应的value值
map.remove(Object key):删除某个键值对应的一对数据
map.remove(Object key,Object value)
注意:Map集合红存放的键值对,key值是唯一的
重写equals和hashCode方法
-生成getter和setter方法
重写toString()
-equals和hashCode:
-为什么要重写equals?
当我们自己创建的类,在创建对象后,想比较这两个对象长得是否一样,
就必须要重写equals,因为不重写,默认的就是调用父类object中的equals
方法,但是这个方法实际上还是比较的地址(使用==去进行比较的)
为什么要重写hashCode?
当某一个类的对象作为map集合中的key值出现的时候,
我们必须要在该类中同时重写equals和hashCode两个方法,
因为map集合中的key值是通过equals比较为true,并且经过散列算法算出来的
hashCode值来进行同时判断的,也就是说,equals比较为true,并且算出来hashCode
值也一样,才认定key值是一样的,如果只重写一个方法,那么在经过散列算法之后,
除了会认为key值不一样之外,还可能会产生链表形式的值,会严重影响查询效率
图的遍历
1.只遍历key值
Set<String> set = map.keySet();
for(String s:set) {
//key值
System.out.print(s+"\t");
//根据key值拿到value值
System.out.println(map.get(s));
}
2.只遍历value值
Collection<Integer> c = map.values();
for(Integer i:c){
System.out.println(i);
}
3.遍历key-value键值对
Set<Entry<String,Integer>> s1 = map.entrySet();
for(Entry<String,Integer> e:s1){
String key = e.getKey();
Integer value = e.getValue();
System.out.println(key+":"+value);
}
文件的操作
创建一个操作文件的类的对象,该类的构造方法中支持设置一个字符串,该字符串表示要操作的文件的路径
注意:File不会自动给我们创建文件
常用的方法:
* 1.exists():判断文件是否存在,如果存在,则会返回true
* 2.createNewFile():创建文件
* 3.length():获取文件的大小(内容的字节数)
* 4.isHidden判断是否是隐藏文件
* 5.lastModified():获取文件的修改时间(返回毫秒值)
* 6.isFile():判断file是否是一个文件
* 7.isDirectory():判断file是否是一个目录(文件夹)
8. mkdir():创建目录
* 9.mkdirs():创建多级目录
*
* File.separator会根据操作系统改变\的方向
获取指定目录中的所有的子项
1.listFiles():获取所有的子项(文件和目录)
File file2 = new File("D:"+File.separator+"workspace");
File[] files=file2.listFiles();
for(File f:files){
if(f.isFile()){
System.out.println(f.getName());
}
if(f.isDirectory()){
System.out.println(f.getName());
}
}
2.accept()是FileFilter()这个类的一个方法,但是FileFilter是一个抽象类,所以只能用抽象内部类
accept()方法就是用来进行过滤的,过滤的对象就是该方法中的文件对象(pathname),该方法会返回一个boolean类型的值,最终,这个方法会把所有的返回结果为true的文件或者目录装到
一个File数组中
File[] f=file2.listFiles(new FileFilter(){
public boolean accept(File pathname){
//过滤出来的所有文件名以.开头的
boolean flag = pathname.getName().startsWith(".");
return flag;
}
});
for(File ff:f){
System.out.println("--"+ff.getName());
}
文件及目录的删除:
delete():可以用来删除文件和空目录
创建一个方法删除多级目录
public static void deleteFile(File file){
//1.判断该file是不是一个目录
//2.如果是文件,则直接删除,如果是目录,则再获取目录中的所有子项
if(file.isDirectory()){
File[] f = file.listFiles();//获取所有的子项
for(File ff:f){
deleteFile(ff);
}
}
file.delete();//如果是文件或者空文件夹,则直接删除
}
这里用到了迭代的方法