Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.2k views
in Technique[技术] by (71.8m points)

flutter - Create Lists from List based on Matching Object Properties

I have a list of objects which contain several properties. I am looking to break the list into several lists composed of objects which posses the same sub-property.

Here is a hypothetical example, say I have a list of Cars. Each Car has properties: id, manufacturerId and color.

I would like to create lists of Cars for those with matching manufacturerId properties.

I have tried using list.where within list.forEach to create new sub-lists, however I get duplicate lists because when the property I am comparing against (A) matches with another property (B), I get another sub-list when:

B = A.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You can use groupBy from package:collection

var carsByManufacturer = groupBy(cars, (car) => car.manufacturerId);

This will create a Map where the keys are the manufacturerID, and the values are lists of cars with that manufacturer.

Then do,

for (final manufacturerEntry in carsByManufacturer) {
      final key = manufacturerEntry.key;
      final value = manufacturerEntry.value;
      final listOfCarsFromSameManufactuer = List.from(entry.value);
      ...
}

You will now have lists called: listOfCarsFromSameManufactuer.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...