要是能用数据库解决就好了,现在的问题是,不能用数据库。只能用java解决。求方法。

解决方案 »

  1.   

    诗人-著作-读者 来存储数据的
    现在要把上面的map的数据转换成
    读者-著作-诗人
    即,读者 对应有很多著作,每个著作属于一个诗人
    那不就是将
    Map<String, Map<String, List<String>>> maps = new HashMap<String, Map<String, List<String>>>();
    转成
    Map<String,List<Map<String,String>>> maps = new HashMap<String,List<Map<String,String>>>();
    第一个key的代表读者,value是一个List读者的著作,这个著作又是个Map著作存放的是诗人为key,著作的名称为value
      

  2.   

    诗人-著作-读者 来存储数据的
    现在要把上面的map的数据转换成
    读者-著作-诗人
    即,读者 对应有很多著作,每个著作属于一个诗人这里假设一个著作可以属于多个诗人怎么做,用java如何实现
      

  3.   

    对于OO语言来说, 这样写代码的practice是不好的。。 因为这么写出来的代码耦合度很高! 所以很难修改。
    在设计的时候需要仔细考虑oo principle, 然后根据SOLID 五大原则进行适当的设计,这样不管要怎么变数据,都是很轻松的事情。
    毕竟我们能做到完全用object来表示想要表达的关系最正确的方法是根据SRP(单一责任原则)把这三个事物写成class,然后在class里边整理清楚他们的关系 
    举例说明,
    我需要一个class用来作为著作public class Work {
       //name of the work, e.g.  早发白帝城
        private String workName;
        //gets and sets
    }那么我可以写一个class 叫做诗人, 来满足你的描述public class Poet{
       //  Name of poet
        private String poetName;
       //the work created by the poet
        List<Work> authoredWork; 
    }但同时, 诗人也可以作为一个作品的属性, 那么把诗人定义在work class里也是可以的, 这样的话就比较符合你下边想要的数据结构。public class Work {
       //name of the work, e.g.  早发白帝城
        private String workName;
        private Poet author;
        //gets and sets
    }
    而读者和诗的关系并不是那么密切, 所以最好的办法应该是用observer pattern 让读者可以自由subscribe要读什么诗。。 
    这样可以保证代码有最低的耦合度。