evi*_*tto 3 java collections jstl
我想要一个也是收藏品的地图.或者更具体地说,我希望能够迭代Map中的条目,包括特定键有多个条目的情况.
我试图解决的具体问题是提供一个可以在jstl中使用的对象,它可以迭代使用c:forEach和表达式${a.b.c}.在这个例子中,我想要${a.b.c}计算第一个值c(或者如果没有则为null),但是也能够迭代所有cs <c:forEach items="${a.b.c}">并让循环体c依次看到每个单独的值,尽管它们在地图中使用相同的密钥.
从方法的角度来看,这应该是直截了当的,只需提供一个Map实现,其entrySet()方法返回一个具有相同键的多个Entries的集合.但由于这似乎违反了地图的合同,事情会以微妙但灾难性的方式破裂吗?有没有其他人做过这种事情?
(如果你猜我试图呈现xml,那你就是对的)
编辑
请注意,这是用于jstl,因此我提供的任何界面必须满足2个条件:
[]和.运算符一起使用时,它必须是一个Map,List数组或JavaBeans对象(并且它们不能是List或数组,因为索引不是数字)Collection,Iterator,Enumeration,Map,或String.所以我想真正的问题是,我可以指望JSTL 只能打电话.containsKey(),.get()和.entrySet()不关心被侵犯的不变量,而不是在内部做这将不保留特殊迭代行为的地图的副本.