カーティケヤン:
セイは、配列リストを持っていますしてみましょう:
catalog id--->901
Catalog name --->series277
catalog id--->901
Catalog name --->series277
catalog id--->545
Catalog name --->series285
catalog id--->545
Catalog name --->series285
catalog id--->545
Catalog name --->series285
catalog id--->546
Catalog name --->series685
catalog id--->546
Catalog name --->series685
catalog id--->40962
Catalog name --->series19348
catalog id--->40962
Catalog name --->series19348
catalog id--->40962
Catalog name --->series19348
catalog id--->40962
このリストから、私は以下のようなoccurancesの数を見つけたいです。
catalog id--->901 -- 2
catalog id--->545 -- 3
catalog id--->546 -- 2
catalog id--->40962 -- 4
私の目標は、のoccurancesの数に基づいて、あるid
私は、さらに反復処理するループを作成したいです。
ArrayListの作成のための私のJavaコードを見つけてください。
List<Catalog> catalogList2 = new ArrayList<Catalog>();
for (SearchHit hit1 : searchHits2)
{
sourceAsMap2 = hit1.getSourceAsMap();
catalog2 = new Catalog();
catalog2.setId(String.valueOf(sourceAsMap2.get("catalog_id")));
catalog2.setCatalog_name(String.valueOf(sourceAsMap2.get("catalog_name")));
catalogList2.add(catalog2);
}
更新
以下のケースを実装しようとすると:
for(int i=0;i<catalogList2.size();i++) {
// want to find the number of occurances for catalog.getId()
//Then i want to create a loop based on the number of occurances of catalog id
for(int i=0;i<catalog_id_occurances.size;i++)
{
//Have to do something.
}
}
アマンChhabra:
あなたはストリームでそれを行うことができます。
catalogs.stream().collect(
Collectors.groupingBy(Catalog::getId, Collectors.counting()));
出力:
jshell> catalogList.stream().collect(
...> Collectors.groupingBy(Catalog::getId, Collectors.counting()));
$43 ==> {901=2, 545=3, 546=2, 40962=4}
--EDIT--
ケースでは、さらに出力を操作したいか、下に使用できるいくつかの顧客形式で印刷したいです:
catalogList.stream().collect(Collectors.groupingBy(Catalog::getId, Collectors.counting())).entrySet().stream().map(p->"catalog id--->"+p.getKey()+" -- "+p.getValue()).forEach(System.out::println);
出力:
catalog id--->901 -- 2
catalog id--->545 -- 3
catalog id--->546 -- 2
catalog id--->40962 -- 4