我有一个名为Elementfisa的实体,其中包含值(id,Post,Sarcina)。现在,Post(Int Id,字符串Nume,String Tip)和Sarcina(Int Id,String Desc)也是实体。我有一个添加为Elementfisa的所有元素的列表,我想在每个单独的列表中获得每个Elementfisa包含的每个Sarcina的频率。这是我现在的代码:

    int nr=0;
    List<Integer> frecv=new ArrayList<Integer>();
    List<Sarcina> sarcini = new ArrayList<>();
    List<Elementfisa> efuri=findEFAll();
    for (Elementfisa i : efuri)
    {
        nr=0;
        for (Sarcina s : sarcini)
            if (s.equals(i.getSarcina()))
                    nr=1;
        if (nr==0)
        {
            int freq = Collections.frequency(efuri, i.getSarcina());
            sarcini.add(i.getSarcina());
            frecv.add(freq);
        }
    }


(findEFAll()从存储库返回哈希图中包含的每个元素)
但是由于某种原因,虽然萨尔奇尼列表包含每个Elementfisa的所有Sarcina,但频率列表在每个位置上都显示为0。我应该更改什么,以便每个位置都应显示正确的出现次数?

最佳答案

您正在Collections.frequency()efuri)上使用List<Elementfisa>。但是,您要将i.getSarcina()传递给它,即一个Sarcina对象。 ListElementfisa可能不能包含Sarcina对象,因此得到零。您可能将错误的列表传递给了该方法。



编辑:
要查看Sarcina中的所有efuri,可以使用Java 8流来执行此操作:

efuri.stream().map(element -> element.getSarcina())
    .collect(Collectors.toList()).contains(i.getSarcina())


分解:

efuri.stream() //Turns this into a stream of Elementfisa
.map(element -> element.getSarcina()) //Turns this into a stream of Sarcina
.collect(Collectors.toList()) //Turn this into a list
.contains(i.getSarcina()) //Check if the list contains the Sarcina

关于java - 实体列表中值的频率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41449831/

10-13 02:39