我有一个LinkedHashMap的<String, List<T>>.我正在构建Map,所以也许有更好的方法来组织所有数据.
我试图获得具有共同列表的键,每个列表中至少有2个共同元素.
例如:
Map
----------------------
| Key | Values |
----------------------
| M1 | [A1, A3] |
| M2 | [A1, A2, A3] |
| M3 | [A1, A2] |
| M4 | [A2, A3] |
----------------------
Run Code Online (Sandbox Code Playgroud)
最后,我想有这个清单: [ [M2, M3], [M2, M4], [M1, M2] ]
我不知道如何将我的第一个条目的值与所有其他条目的值进行比较.依此类推,直到我到达地图的末尾(就像for列表的双循环一样).
我现在的解决方案(但我觉得可能有更好的方法)
List<String> keyList = new ArrayList<>(myMap.keySet());
for(int i = 0 ; i < keyList.size()-1 ; i++) {
String keyA = keyList.get(i);
List<T> valuesA …Run Code Online (Sandbox Code Playgroud) 我正在尝试计算已选择的不同文章中关键字的出现次数.我可以在java 7中做到这一点,但在java 8中苦苦挣扎.
结构是这样的.
关键字类
public class Keyword {
private String word;
private int value;
}
Run Code Online (Sandbox Code Playgroud)
文章课
public class Article {
private Set<Keyword> keywordsList;
private boolean selected;
}
Run Code Online (Sandbox Code Playgroud)
我如何计算我有A,B,C等的时间.关键词
Map<Keyword,Integer> occurrenceMapping = new HashMap<>();
final Set<Article> articleSetFiltered = articleSet.stream()
.filter(a -> a.isSelected())
.collect(Collectors.toSet());
for(Article a : articleSetFiltered) {
for(Keyword k : a.getKeywordsList()) {
if(!occurrenceMapping.containsKey(k)) {
occurrenceMapping.put(k,1);
}
else{
final int occurrence = occurrenceMapping.get(k);
occurrenceMapping.put(k,occurrence+1);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我开始做这样的事情.仍在努力,但不确定我是否朝着正确的方向前进:/如果有人能指引我朝着正确的方向前进,那就太棒了!
Map<Keyword,Integer> occurenceMappingBis = articleSetFiltered = articleSet.stream()
.filter(a -> a.isSelected())
.forEach(
article -> …Run Code Online (Sandbox Code Playgroud) def validateXml(xml){
String xsd = "src/main/ressources/fulltext-documents-v1.2.3.xsd"
def factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI)
def schema = factory.newSchema(new StreamSource(new File(xsd)))
def validator = schema.newValidator()
validator.validate(new StreamSource(new StringReader(xml)))
}
Run Code Online (Sandbox Code Playgroud)
这是我验证xml文档的String表示的函数.下面是另一个捕获验证程序可能引发的异常的函数
def xmlVerification(xml) {
Node rootNode = new XmlParser().parseText(xml)
def stringXml = XmlUtil.serialize(rootNode)
try{
validateXml(stringXml)
println "no error in text"
}catch(SAXParseException e){
println "column number "+e.getColumnNumber()
println "line number"+e.getLineNumber()
}
}
Run Code Online (Sandbox Code Playgroud)
现在它只显示引发异常的列和行号(目前对我来说足够好).
现在,让我们假设我有一个至少有2个错误的文档.我希望得到这两个错误(例如在一个表中),然后对待它们.使用我的代码,它会在第一个异常引发时停止,因此我无法处理2个错误.我必须更正第一个以纠正第二个(通过第二次重新运行我的代码).
任何想法如何我可以浏览整个文档,存储所有异常并在.each {}循环中处理它们或类似的东西?
希望它足够清楚
提前致谢 !