我有一个名为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
对象。 List
的Elementfisa
可能不能包含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/