LoginSignup
0
0

【Dart】自作クラスのリストに関するあれこれ

Posted at

フィールド変数からリストの位置を特定する

indexWhereを使う

// 自作クラス(例)
class Dog {
  Dog({required this.id, required this.name});

  int id;
  String name;

  @override
  String toString() {
    return '{id=$id, name=$name}';
  }
}

----

final dogList = <Dog>[
  Dog(id: 4, name: 'Shiro'),
  Dog(id: 1, name: 'Pochi'),
  Dog(id: 3, name: 'Cha'),
  Dog(id: 2, name: 'Kuro'),
];


// 位置を特定したいID
final targetId = 2; 
int index = dogList.indexWhere((item) => item.id == targetId);
print('位置 $index');
// 位置 3

indexOf だと自作クラスを指定しなければならない。IDだけしか使えないような状況でリストの位置を特定したい場合に便利!

絞り込み

whereを使う

final dogList = <Dog>[
  Dog(id: 4, name: 'Shiro'),
  Dog(id: 1, name: 'Pochi'),
  Dog(id: 3, name: 'Cha'),
  Dog(id: 2, name: 'Kuro'),
];

// idが2より大きいもので絞り込む
final filter = dogList.where((item) => 2 < item.id);
print('result $filter');
// result ({id=4, name=Shiro}, {id=3, name=Cha})

並び替え

sortを使って、compareToで並び替えたい順番を記述する

final dogList = <Dog>[
  Dog(id: 4, name: 'Shiro'),
  Dog(id: 1, name: 'Pochi'),
  Dog(id: 3, name: 'Cha'),
  Dog(id: 2, name: 'Kuro'),
];

// idで大きい順に並び替える
dogList.sort((a, b) => b.id.compareTo(a.id));
print('result $dogList');
// result [{id=4, name=Shiro}, {id=3, name=Cha}, {id=2, name=Kuro}, {id=1, name=Pochi}]

参考

環境

  • Android Studio フラミンゴ
  • Flutter: 3.10.6
  • Dart: 3.0.6
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0