var myList= [1,2,3,4,5];
print(myList.sublist(1,3)); // [2,3]
print(myList.sublist(1)); // [2,3,4,5]
myList.shuffle();
print('$myList'); // [5,4,3,1,2]
var descList= [6,5,4,3,2,1];
print(descList.reversed.toList()); // [1,2,3,4,5,6]
var ascList = [1,2,3,4,5,6];
print(ascList.reversed.toList()); // [6,5,4,3,2,1]
List<String> sports = ['cricket', 'football', 'tennis', 'baseball'];
Map<int, String> map = sports.asMap();
print(map); // {0: cricket, 1: football, 2: tennis, 3: baseball}
var mixList = [1, "a", 2, "b", 3, "c", 4, "d"];
var num = mixList.whereType<int>();
print(num); // (1, 2, 3, 4)
var strlist = mixList.whereType<String>();
print(strlist); // ("a", "b", "c", "d")
var myList = [1, 2, 3, 4, 5];
print(myList.getRange(1,4)); // (2, 3, 4)
var rList= [0,1,2,3,4,5,6];
rList.replaceRange(2,3, [10]);
print('$rList'); // [0, 1, 10, 3, 4, 5, 6]
var firstList = [1,2,3,4,5,6];
print(firstList.firstWhere((i) => i < 4)); // 1
var sList = ['one', 'two', 'three', 'four'];
print(sList.firstWhere((i) => i.length > 3)); // three
var mList = [1, 2, 3, 4];
print(mList.singleWhere((i) => i == 3)); // 3
//if the given list contains a duplicate, then singleWhere method retuns an exception.
//In that case, we can use firstWhere method which returns the first matching element irrespective of repeating / duplicates in the list.
var sList = [1, 2, 3, 3, 4];
print(sList.singleWhere((i) => i == 3));
// Bad state: Too many elements
print(sList.firstWhere((i) => i == 3)); // 3
var lst = [1,2,3,4,5];
var res = lst.fold(5, (i, j) => i + j);
print('res is ${res}'); // res is 20 (5+1, 6+2, 8+3, 11+4, 15+5)
//reduce() is very similar to fold and returns a single value by iterating all elements of given list.
//Only difference is, this method doesn’t take any initialValue and the given list should be non-empty.
var lst = [1,2,3,4,5];
var res = lst.reduce((i, j) => i + j);
print('res is ${res}'); // res is 15
var sportsList = ['cricket', 'tennis', 'football'];
print(sportsList.followedBy(['golf', 'chess']).toList());
// [cricket, tennis, football, golf, chess]
//method any()returns a boolean depending upon whether any element satisfies the condition or not.
print(sportsList.any((e) => e.contains('cricket'))); // true
//method every() returns a boolean depending upon whether all elements satisfies the condition or not.
print(sportsList.every((e) => e.startsWith('a'))); // false
//method take() returns iterable starting from index 0 till the count provided from given list.
print(sportsList.take(2)); // (cricket, tennis)
//method skip() ignores the elements starting from index 0 till count and returns remaining iterable from given list.
print(sportsList.skip(2)); // (football)
add: adds new element in given list.
length: returns total number of elements in given list.
isEmpty: returns boolean if given list is empty or not.
isNotEmpty: checks and returns boolean if given list has elements.
first: returns first element from given list.
last: returns last element from given list.
clear: clears the given list.