File System

这题我主要学习了Runnable 这个。学过一点,早就忘了。
如何通过匿名类的方式新建一个Runnable。

 Runnable callBack = new Runnable(){
        public void run(){
          System.out.println(alert);
        }
      };

如何让它run

if (callBackMap.containsKey(path)) callBackMap.get(path).run();

容易出以下几个错误:
1。 建Map的时候要记得把空字符串放进去,或者要记得判断上一层是不是空字符串。
2。 call watch的时候 要从fileMap看一下这个path在不在fileMap里面,不在的话就返回false。
在的话再看是不是在callBack path里面 。

  class FileSystem {
    Map fileMap;
    Map callBackMap; 
    public FileSystem(){
      fileMap = new HashMap<>();
      fileMap.put("", 0);
      callBackMap = new HashMap<>();
    }
    
    public boolean create(String path, int val){
      if (fileMap.containsKey(path)) return false;
      int lastIndex = path.lastIndexOf("/");
      if (!fileMap.containsKey(path.substring(0, lastIndex))) return false;
      fileMap.put(path, null);
      set(path, val);
      return true; 
    }
    public boolean set(String path, int val) {
      if (!fileMap.containsKey(path)) return false;
      fileMap.put(path, val);
      while (true) {
        if (callBackMap.containsKey(path)) callBackMap.get(path).run();
        int lastIndex = path.lastIndexOf("/");
        if (lastIndex <= 0) break;
        path = path.substring(0, lastIndex);
      }
      
      return true;
    }
    public Integer get(String path) {
      return fileMap.get(path);
    }
    public boolean watch(String path, String alert) {
      if (!fileMap.containsKey(path)) return false;
      Runnable callBack = new Runnable(){
        public void run(){
          System.out.println(alert);
        }
      };
      callBackMap.put(path, callBack);
      return true;
    }
  }

你可能感兴趣的:(File System)