图的集合和文件的操作

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();//如果是文件或者空文件夹,则直接删除
	}

这里用到了迭代的方法

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值