顯示具有 map 標籤的文章。 顯示所有文章
顯示具有 map 標籤的文章。 顯示所有文章

2022年11月4日 星期五

Dart語言學習-Map

 一、宣告Map的方式

1、宣告Map的方法
Map map = {"one":"1號","two":"2號"}; 
//設定內容為<String,Strin>型別的Map,或Map<String,String> map ={"one":"1號","two":"2號"}; 
print(map["one"]); // 輸出 1號
2、 先宣告,再賦值
Map map =new Map(); 
Map["three"]="3號"; 
print(map["three"]); // 輸出 2號

二、基本用法
1.修改Map的值
Map map =new Map(); 
Map["one"]="修改成1號"; 
print(map["one"]); // 輸出 修改成1號

2.查詢Map中與之相等的key是否存在 map.containsKey
Map map = {"one":"1號","two":"2號"};  
print(map.containsKey("one"); // 輸出 true
3.查詢Map中與之相等的Values是否存在 map.containsValues()
Map map = {"one":"1號","two":"2號"};  
print(map.containsValues("1號"); // 輸出 true

4.依據key值刪除Map中的值 map.remove()
Map map = {"one":"1號","two":"2號"};map.remove("one");
print(map); // 輸出 {two:2號}

5、獲清除Map中的所有值 map.clear()
Map map = {"one":"1號","two":"2號"};map.clear();
print(map); // 輸出 {}


三、進階用法
1.複製另外一個map Map.of()
Map map = {"one":"1號","two":"2號"};Map map2=Map.of(map);
print(map2); // 輸出 {one:1號,two:2號}

2.複製另外一個map Map.of()
Map map = {"one":"1號","two":"2號"};Map map2=Map.from(map);
print(map2); // 輸出 {one:1號,two:2號}


參考網頁
https://developer.aliyun.com/article/790264




2022年10月27日 星期四

Flutter學習-將map以 key值或是values排序的方法

 import 'dart:collection';


void main() {
  Map<String, int> mydata = {
    'a': 100,
    'b': 90,
    'c': 120,
    'd': 110,
    'e': 300,
    'f': 90,
  };

//value值排序
  List<int> sortedvalues = mydata.values.toList();
  sortedvalues.sort((a, b) {
    return b - a;
  });

  print(sortedvalues);

  //key值排序
  List<String> sortedkeys = mydata.keys.toList();
  sortedkeys.sort((a, b) {
    return a.compareTo(b);
  });

  print(sortedkeys);

  //利用list的sort方法將map方法排序
  //map轉成list

  List<MapEntry<String, int>> mydatalist = mydata.entries.toList();

  //利用list的sort方法排序,可以利用a.key 或是a.value決定排序key或是value
  mydatalist.sort(((a, b) {
    //return b.value - a.value; //降序
    //return a.value - b.value; //升序
    return a.key.compareTo(b.key);
  }));

//轉回來list
  Map<String, int> new_sorteddata = Map.fromEntries(mydatalist);
  print(new_sorteddata);

//利用SplayTreeMap方法排序,下面調整k1或是 mydata[k1],可以改變是要依key值,還是value值排序

  var sortedBykeyMap = new SplayTreeMap<String, int>.from(
      mydata, (k1, k2) => k1.toString().compareTo(k2.toString()));
  print(sortedBykeyMap);

  var sortedByvalueMap = new SplayTreeMap<String, int>.from(mydata,
      (k1, k2) => mydata[k1].toString().compareTo(mydata[k2].toString()));
  print(sortedByvalueMap);
}