精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

有關于Java Map,應該掌握的8個問題

開發 后端
最近幾天看了幾篇有關于Java Map的外國博文,寫得非常不錯,所以整理了Java map 應該掌握的8個問題,都是日常開發司空見慣的問題,希望對大家有幫助;如果有不正確的地方,歡迎提出,萬分感謝哈~

 前言

[[313878]]

最近幾天看了幾篇有關于Java Map的外國博文,寫得非常不錯,所以整理了Java map 應該掌握的8個問題,都是日常開發司空見慣的問題,希望對大家有幫助;如果有不正確的地方,歡迎提出,萬分感謝哈~

本章節所有代碼demo已上傳github

1、如何把一個Map轉化為List

日常開發中,我們經常遇到這種場景,把一個Map轉化為List。map轉List有以下三種轉化方式:

  • 把map的鍵key轉化為list
  • 把map的值value轉化為list
  • 把map的鍵值key-value轉化為list

偽代碼如下:

  1.   // key list 
  2.   List keyList = new ArrayList(map.keySet()); 
  3.   // value list 
  4.   List valueList = new ArrayList(map.values()); 
  5.   // key-value list 
  6.   List entryList = new ArrayList(map.entrySet()); 

示例代碼:

  1.   public class Test { 
  2.       public static void main(String[] args) { 
  3.           Map<Integer, String> map = new HashMap<>(); 
  4.           map.put(2, "jay"); 
  5.           map.put(1, "whx"); 
  6.           map.put(3, "huaxiao"); 
  7.           //把一個map的鍵轉化為list 
  8.           List<Integer> keyList = new ArrayList<>(map.keySet()); 
  9.           System.out.println(keyList); 
  10.          //把map的值轉化為list 
  11.          List<String> valueList = new ArrayList<>(map.values()); 
  12.          System.out.println(valueList); 
  13.          把map的鍵值轉化為list 
  14.          List entryList = new ArrayList(map.entrySet()); 
  15.          System.out.println(entryList); 
  16.   
  17.      } 
  18.  } 

運行結果:

  1.   [1, 2, 3] 
  2.   [whx, jay, huaxiao] 
  3.   [1=whx, 2=jay, 3=huaxiao] 

2、如何遍歷一個Map

我們經常需要遍歷一個map,可以有以下兩種方式實現:

通過entrySet+for實現遍歷

  1.   for(Entry entry: map.entrySet()) { 
  2.     // get key 
  3.     K key = entry.getKey(); 
  4.     // get value 
  5.     V value = entry.getValue(); 
  6.   } 

實例代碼:

  1.   public class EntryMapTest { 
  2.       public static void main(String[] args) { 
  3.           Map<Integer, String> map = new HashMap<>(); 
  4.           map.put(2, "jay"); 
  5.           map.put(1, "whx"); 
  6.           map.put(3, "huaxiao"); 
  7.    
  8.           for(Map.Entry entry: map.entrySet()) { 
  9.               // get key 
  10.              Integer key = (Integer) entry.getKey(); 
  11.              // get value 
  12.              String value = (String) entry.getValue(); 
  13.   
  14.              System.out.println("key:"+key+",value:"+value); 
  15.          } 
  16.      } 
  17.  } 

通過Iterator+while實現遍歷

  1.   Iterator itr = map.entrySet().iterator(); 
  2.   while(itr.hasNext()) { 
  3.     Entry entry = itr.next(); 
  4.     // get key 
  5.     K key = entry.getKey(); 
  6.     // get value 
  7.     V value = entry.getValue(); 
  8.   } 

實例代碼:

  1.   public class IteratorMapTest { 
  2.       public static void main(String[] args) { 
  3.           Map<Integer, String> map = new HashMap<>(); 
  4.           map.put(2, "jay"); 
  5.           map.put(1, "whx"); 
  6.           map.put(3, "huaxiao"); 
  7.    
  8.           Iterator itr = map.entrySet().iterator(); 
  9.           while(itr.hasNext()) { 
  10.              Map.Entry entry = (Map.Entry) itr.next(); 
  11.              // get key 
  12.              Integer key = (Integer) entry.getKey(); 
  13.              // get value 
  14.              String value = (String) entry.getValue(); 
  15.   
  16.              System.out.println("key:"+key+",value:"+value); 
  17.          } 
  18.      } 
  19.  } 

運行結果:

  1.   key:1,value:whx 
  2.   key:2,value:jay 
  3.   key:3,value:huaxiao 

3、如何根據Map的keys進行排序

對Map的keys進行排序,在日常開發很常見,主要有以下兩種方式實現。

把Map.Entry放進list,再用Comparator對list進行排序

  1.   List list = new ArrayList(map.entrySet()); 
  2.   Collections.sort(list, (Entry e1, Entry e2)-> { 
  3.       return e1.getKey().compareTo(e2.getKey()); 
  4.   }); 

實例代碼:

  1.   public class SortKeysMapTest { 
  2.       public static void main(String[] args) { 
  3.           Map<String, String> map = new HashMap<>(); 
  4.           map.put("2010""jay"); 
  5.           map.put("1999""whx"); 
  6.           map.put("3010""huaxiao"); 
  7.    
  8.           List<Map.Entry<String,String>> list = new ArrayList<>(map.entrySet()); 
  9.           Collections.sort(list, (Map.Entry e1, Map.Entry e2)-> { 
  10.                  return e1.getKey().toString().compareTo(e2.getKey().toString()); 
  11.          }); 
  12.   
  13.          for (Map.Entry entry : list) { 
  14.              System.out.println("key:" + entry.getKey() + ",value:" + entry.getValue()); 
  15.          } 
  16.   
  17.      } 
  18.  } 

使用SortedMap+TreeMap+Comparator實現

  1. 1.  SortedMap sortedMap = new TreeMap(new Comparator() { 
  2. 2.    @Override 
  3. 3.    public int compare(K k1, K k2) { 
  4. 4.      return k1.compareTo(k2); 
  5. 5.    } 
  6. 6.  }); 
  7. 7.  sortedMap.putAll(map); 

實例代碼:

  1.   public class SortKeys2MapTest { 
  2.       public static void main(String[] args) { 
  3.           Map<String, String> map = new HashMap<>(); 
  4.           map.put("2010""jay"); 
  5.           map.put("1999""whx"); 
  6.           map.put("3010""huaxiao"); 
  7.    
  8.           SortedMap sortedMap = new TreeMap(new Comparator<String>() { 
  9.               @Override 
  10.              public int compare(String k1, String k2) { 
  11.                  return k1.compareTo(k2); 
  12.              } 
  13.          }); 
  14.          sortedMap.putAll(map); 
  15.   
  16.          Iterator itr = sortedMap.entrySet().iterator(); 
  17.          while(itr.hasNext()) { 
  18.              Map.Entry entry = (Map.Entry) itr.next(); 
  19.              // get key 
  20.              String key = (String) entry.getKey(); 
  21.              // get value 
  22.              String value = (String) entry.getValue(); 
  23.   
  24.              System.out.println("key:"+key+",value:"+value); 
  25.          } 
  26.      } 
  27.  } 

運行結果:

  1.   key:1999,value:whx 
  2.   key:2010,value:jay 
  3.   key:3010,value:huaxiao 

4、如何對Map的values進行排序

  1.   List list = new ArrayList(map.entrySet()); 
  2.   Collections.sort(list, (Entry e1, Entry e2) ->
  3.       return e1.getValue().compareTo(e2.getValue()); 
  4.     }); 

實例代碼:

  1.   public class SortValuesMapTest { 
  2.       public static void main(String[] args) { 
  3.           Map<String, String> map = new HashMap<>(); 
  4.           map.put("2010""jay"); 
  5.           map.put("1999""whx"); 
  6.           map.put("3010""huaxiao"); 
  7.    
  8.           List <Map.Entry<String,String>>list = new ArrayList<>(map.entrySet()); 
  9.           Collections.sort(list, (Map.Entry e1, Map.Entry e2)-> { 
  10.                  return e1.getValue().toString().compareTo(e2.getValue().toString()); 
  11.              } 
  12.          ); 
  13.   
  14.          for (Map.Entry entry : list) { 
  15.              System.out.println("key:" + entry.getKey() + ",value:" + entry.getValue()); 
  16.          } 
  17.      } 
  18.  } 

運行結果:

  1.   key:3010,value:huaxiao 
  2.   key:2010,value:jay 
  3.   key:1999,value:whx 

5、如何初始化一個靜態/不可變的Map

初始化一個靜態不可變的map,單單static final+static代碼塊還是不行的,如下:

  1.   public class Test1 { 
  2.       private static final Map <Integer,String>map; 
  3.       static { 
  4.           map = new HashMap<Integer, String>(); 
  5.           map.put(1, "one"); 
  6.           map.put(2, "two"); 
  7.       } 
  8.       public static void main(String[] args) { 
  9.           map.put(3, "three"); 
  10.          Iterator itr = map.entrySet().iterator(); 
  11.          while(itr.hasNext()) { 
  12.              Map.Entry entry = (Map.Entry) itr.next(); 
  13.              // get key 
  14.              Integer key = (Integer) entry.getKey(); 
  15.              // get value 
  16.              String value = (String) entry.getValue(); 
  17.   
  18.              System.out.println("key:"+key+",value:"+value); 
  19.          } 
  20.      } 
  21.  } 

這里面,map繼續添加元素(3,"three"),發現是OK的,運行結果如下:

  1.   key:1,value:one 
  2.   key:2,value:two 
  3.   key:3,value:three    

真正實現一個靜態不可變的map,需要Collections.unmodifiableMap,代碼如下:

  1.   public class Test2 { 
  2.       private static final Map<Integer, String> map; 
  3.       static { 
  4.           Map<Integer,String> aMap = new HashMap<>(); 
  5.           aMap.put(1, "one"); 
  6.           aMap.put(2, "two"); 
  7.           map = Collections.unmodifiableMap(aMap); 
  8.       } 
  9.    
  10.      public static void main(String[] args) { 
  11.          map.put(3, "3"); 
  12.          Iterator itr = map.entrySet().iterator(); 
  13.          while(itr.hasNext()) { 
  14.              Map.Entry entry = (Map.Entry) itr.next(); 
  15.              // get key 
  16.              Integer key = (Integer) entry.getKey(); 
  17.              // get value 
  18.              String value = (String) entry.getValue(); 
  19.   
  20.             System.out.println("key:"+key+",value:"+value); 
  21.          } 
  22.      } 
  23.   
  24.  } 

運行結果如下:

可以發現,繼續往map添加元素是會報錯的,實現真正不可變的map。

6、HashMap, TreeMap, and Hashtable,ConcurrentHashMap的區別

7、如何創建一個空map

如果map是不可變的,可以這樣創建:

  1.   Map map=Collections.emptyMap(); 
  2.   or 
  3.   Map<String,String> map=Collections.<String, String>emptyMap(); 
  4.   //map1.put("1""1"); 運行出錯 

如果你希望你的空map可以添加元素的,可以這樣創建

  1. Map map = new HashMap(); 

8、有關于map的復制

有關于hashmap的復制,在日常開發中,使用也比較多。主要有 =,clone,putAll,但是他們都是淺復制,使用的時候注意啦,可以看一下以下例子:

例子一,使用=復制一個map:

  1.   public class CopyMapAssignTest { 
  2.       public static void main(String[] args) { 
  3.    
  4.           Map<IntegerUser> userMap = new HashMap<>(); 
  5.    
  6.           userMap.put(1, new User("jay", 26)); 
  7.           userMap.put(2, new User("fany", 25)); 
  8.    
  9.           //Shallow clone 
  10.          Map<IntegerUser> clonedMap = userMap; 
  11.   
  12.          //Same as userMap 
  13.          System.out.println(clonedMap); 
  14.   
  15.          System.out.println("\nChanges reflect in both maps \n"); 
  16.   
  17.          //Change a value is clonedMap 
  18.          clonedMap.get(1).setName("test"); 
  19.   
  20.          //Verify content of both maps 
  21.          System.out.println(userMap); 
  22.          System.out.println(clonedMap); 
  23.      } 
  24.  } 

運行結果:

  1.   {1=User{name='jay', age=26}, 2=User{name='fany', age=25}} 
  2.    
  3.   Changes reflect in both maps 
  4.    
  5.   {1=User{name='test', age=26}, 2=User{name='fany', age=25}} 
  6.   {1=User{name='test', age=26}, 2=User{name='fany', age=25}} 

從運行結果看出,對cloneMap修改,兩個map都改變了,所以=是淺復制。

例子二,使用hashmap的clone復制:

  1.   { 
  2.       public static void main(String[] args) { 
  3.           HashMap<IntegerUser> userMap = new HashMap<>(); 
  4.    
  5.           userMap.put(1, new User("jay", 26)); 
  6.           userMap.put(2, new User("fany", 25)); 
  7.    
  8.           //Shallow clone 
  9.           HashMap<IntegerUser> clonedMap = (HashMap<IntegerUser>) userMap.clone(); 
  10.   
  11.          //Same as userMap 
  12.          System.out.println(clonedMap); 
  13.   
  14.          System.out.println("\nChanges reflect in both maps \n"); 
  15.   
  16.          //Change a value is clonedMap 
  17.          clonedMap.get(1).setName("test"); 
  18.   
  19.          //Verify content of both maps 
  20.          System.out.println(userMap); 
  21.          System.out.println(clonedMap); 
  22.      } 
  23.  } 

運行結果:

  1.   {1=User{name='jay', age=26}, 2=User{name='fany', age=25}} 
  2.    
  3.   Changes reflect in both maps 
  4.    
  5.   {1=User{name='test', age=26}, 2=User{name='fany', age=25}} 
  6.   {1=User{name='test', age=26}, 2=User{name='fany', age=25}} 

從運行結果看出,對cloneMap修改,兩個map都改變了,所以hashmap的clone也是淺復制。

例子三,通過putAll操作

  1.   public class CopyPutAllMapTest { 
  2.       public static void main(String[] args) { 
  3.           HashMap<IntegerUser> userMap = new HashMap<>(); 
  4.    
  5.           userMap.put(1, new User("jay", 26)); 
  6.           userMap.put(2, new User("fany", 25)); 
  7.    
  8.           //Shallow clone 
  9.           HashMap<IntegerUser> clonedMap = new HashMap<>(); 
  10.          clonedMap.putAll(userMap); 
  11.   
  12.          //Same as userMap 
  13.          System.out.println(clonedMap); 
  14.   
  15.          System.out.println("\nChanges reflect in both maps \n"); 
  16.   
  17.          //Change a value is clonedMap 
  18.          clonedMap.get(1).setName("test"); 
  19.   
  20.          //Verify content of both maps 
  21.          System.out.println(userMap); 
  22.          System.out.println(clonedMap); 
  23.      } 
  24.  } 

運行結果:

  1.   {1=User{name='jay', age=26}, 2=User{name='fany', age=25}} 
  2.    
  3.   Changes reflect in both maps 
  4.    
  5.   {1=User{name='test', age=26}, 2=User{name='fany', age=25}} 
  6.   {1=User{name='test', age=26}, 2=User{name='fany', age=25}} 

從運行結果看出,對cloneMap修改,兩個map都改變了,所以putAll還是淺復制。

那么,如何實現深度復制呢?

可以使用序列化實現,如下為谷歌Gson序列化HashMap,實現深度復制的例子:

  1.   public class CopyDeepMapTest { 
  2.    
  3.       public static void main(String[] args) { 
  4.           HashMap<IntegerUser> userMap = new HashMap<>(); 
  5.    
  6.           userMap.put(1, new User("jay", 26)); 
  7.           userMap.put(2, new User("fany", 25)); 
  8.    
  9.           //Shallow clone 
  10.          Gson gson = new Gson(); 
  11.          String jsonString = gson.toJson(userMap); 
  12.   
  13.          Type type = new TypeToken<HashMap<IntegerUser>>(){}.getType(); 
  14.          HashMap<IntegerUser> clonedMap = gson.fromJson(jsonString, type); 
  15.   
  16.          //Same as userMap 
  17.          System.out.println(clonedMap); 
  18.   
  19.          System.out.println("\nChanges reflect in only one map \n"); 
  20.   
  21.          //Change a value is clonedMap 
  22.          clonedMap.get(1).setName("test"); 
  23.   
  24.          //Verify content of both maps 
  25.          System.out.println(userMap); 
  26.          System.out.println(clonedMap); 
  27.      } 
  28.  } 

運行結果:

  1.   {1=User{name='jay', age=26}, 2=User{name='fany', age=25}} 
  2.    
  3.   Changes reflect in only one map 
  4.    
  5.   {1=User{name='jay', age=26}, 2=User{name='fany', age=25}} 
  6.   {1=User{name='test', age=26}, 2=User{name='fany', age=25}} 

從運行結果看出,對cloneMap修改,userMap沒有被改變,所以是深度復制。

 

責任編輯:華軒 來源: 撿田螺的小男孩
相關推薦

2010-05-05 17:53:56

web負載均衡

2017-07-06 09:20:51

2020-04-10 16:35:58

GitHub數據網站

2023-03-03 13:42:45

2015-04-22 12:08:16

JAVAMap問題

2017-05-17 17:23:00

2009-06-15 13:17:37

Java初學者Java概念

2010-06-09 16:57:14

路由選擇協議

2023-10-12 13:07:29

2023-10-14 18:18:59

Spring

2016-01-18 11:03:58

程序員搜索技巧

2023-11-22 11:30:03

首席信息官IT管理

2023-07-03 10:46:20

CIOIT領導者

2009-12-01 14:30:08

VS2003使用

2021-04-27 15:28:32

程序員技能開發者

2014-12-03 10:17:09

Java 8

2023-09-15 11:47:13

2009-07-02 17:39:46

Java未來

2011-07-08 14:09:51

iPhone UI

2021-04-21 13:29:42

內存安全Java
點贊
收藏

51CTO技術棧公眾號

国产精品看片你懂得| 久久国产日本精品| 欧美大片在线观看一区| 波多野结衣 作品| 手机看片一区二区| 国产精品普通话对白| 在线观看久久av| 国产裸体视频网站| 厕沟全景美女厕沟精品| 国产精品福利在线播放| 国产精品一区二区av| 成人黄色免费网| 国产综合精品| 亚洲欧美www| 色婷婷综合在线观看| 夜鲁夜鲁夜鲁视频在线播放| 国产精品不卡一区| 精品国产一区二区三区麻豆免费观看完整版 | 日日夜夜天天综合| 一区二区三区在线观看免费| 精品卡一卡二卡三卡四在线| 日本黄网站免费| 成人在线网址| 久久在线免费观看| 成人黄视频免费| 一级黄色大片免费观看| 日韩午夜在线| 免费91麻豆精品国产自产在线观看| 免费中文字幕av| 2020国产精品极品色在线观看| 色乱码一区二区三区88| 日韩av在线播放不卡| 女女色综合影院| 国产欧美在线观看一区| 国产综合欧美在线看| av在线免费在线观看| 蜜臀av性久久久久av蜜臀妖精| 午夜精品久久久久久久99热浪潮| 国产成人av免费在线观看| 国产一区二区三区四区五区传媒 | 欧美美女在线| 欧美精品一区二区蜜臀亚洲| 午夜视频在线观| 亚洲xxxxxx| 91丨九色丨国产丨porny| 91原创国产| 国产又粗又大又黄| 麻豆精品精品国产自在97香蕉| 欧美专区国产专区| 自拍偷拍欧美亚洲| 亚洲经典在线| 国内精品久久久久伊人av| 欧美三级在线免费观看| 香蕉久久网站| 日韩一区二区av| 少妇太紧太爽又黄又硬又爽小说| 欧美精品第一区| 亚洲视频第一页| xxww在线观看| 福利精品在线| 欧美色图片你懂的| 美女网站色免费| 免费视频观看成人| 欧美美女视频在线观看| 亚洲黄色av片| 多野结衣av一区| 久久色中文字幕| 久久99精品久久久久久三级| 亚洲av片在线观看| 久久婷婷国产综合国色天香| 欧美日韩一区在线视频| 国产中文在线视频| 国产精品网友自拍| 欧美日韩一区二区三区电影| 日本高清视频在线播放| 亚洲欧美日韩在线播放| 日本老太婆做爰视频| 免费在线国产视频| 亚洲成av人片| 无码人妻丰满熟妇区毛片| 写真福利精品福利在线观看| 欧美视频精品在线| 91免费视频污| 久草在线综合| 欧美精品三级日韩久久| 欧美视频国产视频| 91精品国产乱码久久久竹菊| 亚洲精品91美女久久久久久久| 免费看黄色aaaaaa 片| 欧美男男gaytwinkfreevideos| 国产亚洲精品日韩| 色老板免费视频| 国内精品亚洲| 日韩美女主播视频| 国产精品露脸视频| 国产精品69久久久久水密桃| 黑人中文字幕一区二区三区| 天堂国产一区二区三区| 亚洲国产精品成人久久综合一区| 一道本在线观看视频| aa国产成人| 精品婷婷伊人一区三区三| 永久看看免费大片| 精品中文字幕一区二区三区av| www.日韩免费| 亚洲黄色小说图片| 国产综合色视频| 久久精品日产第一区二区三区精品版 | 337人体粉嫩噜噜噜| 国模大尺度视频一区二区| 91精品国产91久久久久久最新毛片 | 亚洲高清不卡一区| 免费污视频在线| 欧美日韩综合在线免费观看| 国产精品果冻传媒| 激情不卡一区二区三区视频在线| 欧美精品一区二| 波兰性xxxxx极品hd| 成人影视亚洲图片在线| 欧美精品电影免费在线观看| 国产成人av免费| 成人va在线观看| 五月天综合婷婷| 成人欧美大片| 亚洲成人在线视频播放| 日本少妇一级片| 青草国产精品| 日韩av免费看网站| 天天综合网在线| 亚洲综合男人的天堂| 欧美日韩中文不卡| 综合国产视频| 69av视频在线播放| 成人午夜福利视频| 亚洲精品久久嫩草网站秘色| www.色就是色| 欧美大片网站| 亚洲色图激情小说| 毛片基地在线观看| 成人h动漫精品一区二区| 激情视频小说图片| 国产精品一区二区精品| 日日骚久久av| 中文字幕+乱码+中文| 2020日本不卡一区二区视频| 男人添女荫道口图片| 在线观看视频一区二区三区| 久久不射电影网| 91tv国产成人福利| 国产精品电影一区二区| 色综合色综合色综合色综合| 精品国产乱码久久久| 日韩在线一区二区三区免费视频| 波多野结衣电影在线播放| 久久亚洲捆绑美女| 日本www高清视频| 欧美精品一区二区三区中文字幕 | 精品一区二区三区人妻| 国产精品一区二区你懂的| 三年中文高清在线观看第6集| 激情久久一区二区| www.欧美免费| 精品人妻少妇AV无码专区 | 亚洲精品在线观看av| 国产a级毛片一区| 国产精品国产三级国产专区51| 精品视频国内| 欧美激情精品久久久久久免费印度| 国产免费无遮挡| 一区二区三区四区蜜桃| 成人在线观看一区二区| 99热免费精品| 色涩成人影视在线播放| 国产精品原创视频| 欧美精品性视频| 六月丁香色婷婷| 日韩欧美有码在线| 蜜桃av免费在线观看| 国产一区二区在线观看免费| 国产肉体ⅹxxx137大胆| 欧美大胆视频| 国产精品久久网| 26uuu亚洲电影在线观看| 欧美精品一区二区三区蜜桃视频| 亚洲免费在线视频观看| 国产精品久久久久一区二区三区| 久久精品国产99久久99久久久| 影音先锋国产精品| 欧美日韩一区二区视频在线观看 | 欧美日韩精品一区视频| 欧美成人一二三区| 26uuu亚洲婷婷狠狠天堂| 天天操天天爽天天射| 欧美.www| 欧美午夜欧美| 日韩精品视频中文字幕| 欧美在线影院在线视频| 国内外激情在线| 日韩电视剧在线观看免费网站 | 99riav视频在线观看| 国产亚洲欧美日韩美女| 99精品久久久久久中文字幕| 色综合天天综合网国产成人综合天| 午夜激情福利电影| 99久久综合国产精品| 羞羞的视频在线| 亚洲品质自拍| 亚洲tv在线观看| 亚洲成人看片| 久久免费国产视频| 欧美激情黑人| 亚洲免费精彩视频| 亚洲国产精品一| 欧美午夜精品一区二区三区| 国产午夜视频在线播放| 亚洲天堂免费看| xxxx日本免费| 日韩制服丝袜先锋影音| 国产内射老熟女aaaa| 日本午夜一区| 26uuu日韩精品一区二区| 好了av在线| 在线成人免费网站| 香蕉av一区二区三区| 日韩视频123| 一区二区日韩视频| 日本韩国一区二区三区| 福利一区二区三区四区| 亚洲少妇中出一区| 欧美另类69xxxx| 久久久综合网站| 国产高清自拍视频| 成人精品免费看| 在线观看视频你懂得| 久久精品99国产精品| 在线免费视频a| 久久久噜噜噜| 日韩在线xxx| 亚洲一区二区三区午夜| 99久久精品国产一区色| 欧美在线短视频| 国产精品视频123| 婷婷久久综合九色综合绿巨人| 极品盗摄国产盗摄合集| 18成人在线观看| 久艹在线观看视频| 亚洲欧洲日韩在线| 制服丨自拍丨欧美丨动漫丨| 国产日产欧产精品推荐色| 一级性生活毛片| 91视频www| 97超碰在线资源| 久久综合色鬼综合色| 中文字幕一区二区三区人妻| 99精品久久只有精品| a在线视频观看| 影音先锋久久久| 国产日韩av网站| 国产麻豆综合| wwwxxx黄色片| 日本美女视频一区二区| 日本女人高潮视频| 久久精品国内一区二区三区水蜜桃| 亚洲一区二区四区| 99视频精品全国免费| 99热一区二区三区| 欧美午夜一区二区福利视频| 成年女人18级毛片毛片免费 | 中文字幕综合在线| 午夜视频在线观看网站| 精品精品国产国产自在线| 哥也色在线视频| 久久免费国产视频| 性感美女一区二区在线观看| 国产ts人妖一区二区三区 | 永久av在线| 久久综合免费视频影院| gogo久久| 国产精品美女呻吟| 国产成人免费av一区二区午夜| 97超碰人人模人人爽人人看| 卡一精品卡二卡三网站乱码 | 68国产成人综合久久精品| 国产91视频一区| 亚洲在线国产日韩欧美| 国产成年人视频网站| 国产福利一区二区| 国产成人无码精品久久二区三| 中文字幕免费一区| 久久久久久国产精品免费播放| 狠狠色狠色综合曰曰| 亚洲一二区视频| 精品国产乱码久久久久久1区2区 | www.久久撸.com| 国产精品偷拍| 国产精品一二三在线| 国产精伦一区二区三区| 日韩欧美一区二区三区四区五区 | 国产传媒久久久| 欧美综合二区| 黑人性生活视频| 久久夜色精品一区| 黄色片在线观看网站| 一本色道久久综合亚洲精品按摩 | 日韩精品亚洲精品| 国产激情在线观看| 日本精品久久久久影院| 免费看日产一区二区三区| 清纯唯美一区二区三区| 午夜精品av| 视频二区在线播放| 91网站在线观看视频| 国产乱国产乱老熟300| 91福利小视频| 深爱五月激情五月| 久久精品一偷一偷国产| 欧美xxxxxx| 激情小说网站亚洲综合网| 五月婷婷亚洲| 午夜免费福利在线| 久久嫩草精品久久久精品一| 欧美日韩在线观看成人| 精品视频在线免费观看| 可以免费看污视频的网站在线| 日韩欧美的一区| avav免费在线观看| 琪琪亚洲精品午夜在线| 国产精品qvod| 免费观看亚洲视频| 精品一区二区三区免费播放| 99久久久无码国产精品衣服| 天天综合色天天综合| 亚洲第一黄色片| 久久国产天堂福利天堂| 狠狠久久综合| 亚洲欧洲精品一区| 美女免费视频一区二区| 日本精品在线观看视频| 欧美日韩一区二区免费视频| 日本精品久久久久| 国内精品久久久久久久久| 国产成人tv| 97超碰人人澡| 成人国产在线观看| 国产无码精品一区二区| 亚洲国产精品久久久| 国内在线视频| 国产精品一区二区三区免费观看 | 91精品国产自产在线丝袜啪| 一本二本三本亚洲码 | a天堂视频在线观看| 99亚偷拍自图区亚洲| 国产精品白浆一区二小说| 精品处破学生在线二十三| av在线最新| 欧美日韩成人一区二区三区| 日韩影院精彩在线| 日本污视频网站| 欧美一区二区播放| 欧美aaaaaaa| 久久精品日韩精品| 日韩不卡一区二区| 国产乱子轮xxx农村| 欧美一卡2卡3卡4卡| eeuss鲁一区二区三区| 蜜桃视频在线观看91| 日韩精品一二三| www色aa色aawww| 精品国产一区二区三区四区四 | 在线观看免费的av| 亚洲人成网站色在线观看| www黄色网址| 欧美亚洲国产视频| 日韩欧美国产精品综合嫩v| 久久精品一卡二卡| 午夜影视日本亚洲欧洲精品| 欧美在线观看在线观看| 久久色在线播放| 91麻豆精品国产91久久久久推荐资源| 黄色大片中文字幕| 久久久国产精品不卡| 91在线精品入口| 国内精品久久久久久久久| 欧美综合久久| 91精品人妻一区二区三区四区| 欧美性猛交xxxxx免费看| 婷婷在线视频| 国产亚洲二区| 美女看a上一区| 97超碰人人干| 久久久精品2019中文字幕神马| 999精品视频在这里| 91看片就是不一样| 亚洲激情自拍视频| 伦理片一区二区三区| 99精彩视频在线观看免费| 久色成人在线| 欧美黄色一级网站| 夜夜嗨av一区二区三区免费区| 国产 日韩 欧美 综合 一区|