青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++ Programmer's Cookbook

{C++ 基礎(chǔ)} {C++ 高級} {C#界面,C++核心算法} {設(shè)計模式} {C#基礎(chǔ)}

ArrayList的使用方法【轉(zhuǎn)載】

 

ArrayList 的使用方法 【轉(zhuǎn)載】

 

***

Source URL: http://i.yesky.com/bbs/jsp/view.jsp?articleID=889992&forumID=150

***  

1 、什么是 ArrayList
    ArrayList 就是傳說中的動態(tài)數(shù)組,用 MSDN 中的說法,就是 Array 的復(fù)雜版本,它提供了如下一些好處:

動態(tài)的增加和減少元素
實現(xiàn)了 ICollection 和 IList 接口
靈活的設(shè)置數(shù)組的大小

2 、如何使用 ArrayList
   最簡單的例子:
ArrayList List = new ArrayList();
for( int i=0;i<10;i++ ) // 給數(shù)組增加 10 個 Int 元素
List.Add(i);
//.. 程序做一些處理
List.RemoveAt(5);// 將第 6 個元素移除
for( int i=0;i<3;i++ ) // 再增加 3 個元素
  List.Add(i+20);
Int32[] values = (Int32[])List.ToArray(typeof(Int32));// 返回 ArrayList 包含的數(shù)組

這是一個簡單的例子,雖然沒有包含 ArrayList 所有的方法,但是可以反映出 ArrayList 最常用的用法

3 、 ArrayList 重要的方法和屬性
( 1 )構(gòu)造器
    ArrayList 提供了三個構(gòu)造器:
public ArrayList();
默認的構(gòu)造器,將會以默認( 16 )的大小來初始化內(nèi)部的數(shù)組
public ArrayList(ICollection);
用一個 ICollection 對象來構(gòu)造,并將該集合的元素添加到 ArrayList
public ArrayList(int);
用指定的大小來初始化內(nèi)部的數(shù)組

( 2 )IsSynchronized 屬性和 ArrayList.Synchronized 方法
    IsSynchronized 屬性指示當(dāng)前的 ArrayList 實例是否支持線程同步,而 ArrayList.Synchronized 靜態(tài)方法則會返回一個 ArrayList 的線程同步的封裝。
    如果使用非線程同步的實例,那么在多線程訪問的時候,需要自己手動調(diào)用 lock 來保持線程同步,例如:
ArrayList list = new ArrayList();
//...
lock( list.SyncRoot ) // 當(dāng) ArrayList 為非線程包裝的時候, SyncRoot 屬性其實就是它自己,但是為了滿足 ICollection 的 SyncRoot 定義,這里還是使用 SyncRoot 來保持源代碼的規(guī)范性
{
list.Add(  “ Add a Item ”  );
}

    如果使用 ArrayList.Synchronized 方法返回的實例,那么就不用考慮線程同步的問題,這個實例本身就是線程安全的,實際上 ArrayList 內(nèi)部實現(xiàn)了一個保證線程同步的內(nèi)部類, ArrayList.Synchronized 返回的就是這個類的實例,它里面的每個屬性都是用了 lock 關(guān)鍵字來保證線程同步。

****

但是,使用這個方法( ArrayList.Synchronized )并不能保證枚舉的同步,例如,一個線程正在刪除或添加集合項,而另一個線程同時進行枚舉,這時枚舉將會拋出異常。所以,在枚舉的時候,你必須明確使用 SyncRoot 鎖定這個集合。

 

Hashtable 與 ArrayList 關(guān)于線程安全性的使用方法類似。

****

( 3 )Count 屬性和 Capacity 屬性
    Count 屬性是目前 ArrayList 包含的元素的數(shù)量,這個屬性是只讀的。
Capacity 屬性是目前 ArrayList 能夠包含的最大數(shù)量,可以手動的設(shè)置這個屬性,但是當(dāng)設(shè)置為小于 Count 值的時候會引發(fā)一個異常。

( 4 )Add 、 AddRange 、 Remove 、 RemoveAt 、 RemoveRange 、 Insert 、 InsertRange
     這幾個方法比較類似
Add 方法用于添加一個元素到當(dāng)前列表的末尾
AddRange 方法用于添加一批元素到當(dāng)前列表的末尾
Remove 方法用于刪除一個元素,通過元素本身的引用來刪除
RemoveAt 方法用于刪除一個元素,通過索引值來刪除
RemoveRange 用于刪除一批元素,通過指定開始的索引和刪除的數(shù)量來刪除
Insert 用于添加一個元素到指定位置,列表后面的元素依次往后移動
InsertRange 用于從指定位置開始添加一批元素,列表后面的元素依次往后移動

另外,還有幾個類似的方法:
Clear 方法用于清除現(xiàn)有所有的元素
Contains 方法用來查找某個對象在不在列表之中

其他的我就不一一累贅了,大家可以查看 MSDN ,上面講的更仔細
( 5 )TrimSize 方法
     這個方法用于將 ArrayList 固定到實際元素的大小,當(dāng)動態(tài)數(shù)組元素確定不在添加的時候,可以調(diào)用這個方法來釋放空余的內(nèi)存。
( 6 )ToArray 方法
這個方法把 ArrayList 的元素 Copy 到一個新的數(shù)組中。


4 ArrayList 與數(shù)組轉(zhuǎn)換
例 1 :
ArrayList List = new ArrayList();
List.Add(1);
List.Add(2);
List.Add(3);

Int32[] values = (Int32[])List.ToArray(typeof(Int32));

例 2 :
ArrayList List = new ArrayList();
List.Add(1);
List.Add(2);
List.Add(3);

Int32[] values = new Int32[List.Count];
List.CopyTo(values);

上面介紹了兩種從 ArrayList 轉(zhuǎn)換到數(shù)組的方法

例 3 :
ArrayList List = new ArrayList();
List.Add(  “ string ”  );
List.Add( 1 );
// 往數(shù)組中添加不同類型的元素

object[] values = List.ToArray(typeof(object)); // 正確
string[] values = (string[])List.ToArray(typeof(string)); // 錯誤

和數(shù)組不一樣,因為可以轉(zhuǎn)換為 Object 數(shù)組,所以往 ArrayList 里面添加不同類型的元素是不會出錯的,但是當(dāng)調(diào)用 ArrayList 方法的時候,要么傳遞所有元素都可以正確轉(zhuǎn)型的類型或者 Object 類型,否則將會拋出無法轉(zhuǎn)型的異常。


5 、ArrayList 最佳使用建議
這一節(jié)我們來討論 ArrayList 與數(shù)組的差別,以及 ArrayList 的效率問題
( 1 ) ArrayList 是 Array 的復(fù)雜版本
ArrayList 內(nèi)部封裝了一個 Object 類型的數(shù)組,從一般的意義來說,它和數(shù)組沒有本質(zhì)的差別,甚至于 ArrayList 的許多方法,如 Index 、 IndexOf 、 Contains 、 Sort 等都是在內(nèi)部數(shù)組的基礎(chǔ)上直接調(diào)用 Array 的對應(yīng)方法。
( 2 )內(nèi)部的 Object 類型的影響
對于一般的引用類型來說,這部分的影響不是很大,但是對于值類型來說,往 ArrayList 里面添加和修改元素,都會引起裝箱和拆箱的操作,頻繁的操作可能會影響一部分效率。
但是恰恰對于大多數(shù)人,多數(shù)的應(yīng)用都是使用值類型的數(shù)組。
消除這個影響是沒有辦法的,除非你不用它,否則就要承擔(dān)一部分的效率損失,不過這部分的損失不會很大。
( 3 )數(shù)組擴容
這是對 ArrayList 效率影響比較大的一個因素。
每當(dāng)執(zhí)行 Add 、 AddRange 、 Insert 、 InsertRange 等添加元素的方法,都會檢查內(nèi)部數(shù)組的容量是否不夠了,如果是,它就會以當(dāng)前容量的兩倍來重新構(gòu)建一個數(shù)組,將舊元素 Copy 到新數(shù)組中,然后丟棄舊數(shù)組,在這個臨界點的擴容操作,應(yīng)該來說是比較影響效率的。

例 1 :比如,一個可能有 200 個元素的數(shù)據(jù)動態(tài)添加到一個以默認 16 個元素大小創(chuàng)建的 ArrayList 中,將會經(jīng)過:
16*2*2*2*2 = 256
四次的擴容才會滿足最終的要求,那么如果一開始就以:
ArrayList List = new ArrayList( 210 );
的方式創(chuàng)建 ArrayList ,不僅會減少 4 次數(shù)組創(chuàng)建和 Copy 的操作,還會減少內(nèi)存使用。

例 2 :預(yù)計有 30 個元素而創(chuàng)建了一個 ArrayList :
ArrayList List = new ArrayList(30);
在執(zhí)行過程中,加入了 31 個元素,那么數(shù)組會擴充到 60 個元素的大小,而這時候不會有新的元素再增加進來,而且有沒有調(diào)用 TrimSize 方法,那么就有 1 次擴容的操作,并且浪費了 29 個元素大小的空間。如果這時候,用:
ArrayList List = new ArrayList(40);
那么一切都解決了。
所以說,正確的預(yù)估可能的元素,并且在適當(dāng)?shù)臅r候調(diào)用 TrimSize 方法是提高 ArrayList 使用效率的重要途徑。
( 4 )頻繁的調(diào)用 IndexOf 、 Contains 等方法( Sort 、 BinarySearch 等方法經(jīng)過優(yōu)化,不在此列)引起的效率損失
首先,我們要明確一點, ArrayList 是動態(tài)數(shù)組,它不包括通過 Key 或者 Value 快速訪問的算法,所以實際上調(diào)用 IndexOf 、 Contains 等方法是執(zhí)行的簡單的循環(huán)來查找元素,所以頻繁的調(diào)用此類方法并不比你自己寫循環(huán)并且稍作優(yōu)化來的快,如果有這方面的要求,建議使用 Hashtable 或 SortedList 等鍵值對的集合。
ArrayList al=new ArrayList();

al.Add("How");
al.Add("are");
al.Add("you!");

al.Add(100);
al.Add(200);
al.Add(300);

al.Add(1.2);
al.Add(22.8);

.........

// 第一種遍歷  ArrayList  對象的方法
foreach(object o in al)
{
Console.Write(o.ToString()+" ");
}

// 第二種遍歷  ArrayList  對象的方法
IEnumerator ie=al.GetEnumerator();
while(ie.MoveNext())
{
Console.Write(ie.Curret.ToString()+" ");
}

// 第三種遍歷  ArrayList  對象的方法
我忘記了 , 好象是   利用  ArrayList 對象的一個屬性 , 它返回一此對象中的元素個數(shù) .

然后在利用索引 
for(int i=0;i<Count;i++)
{
Console.Write(al[i].ToString()+" ");
}

-------------------------數(shù)組的用法----------------------------------------------
數(shù)組概述

C# 數(shù)組從零開始建立索引,即數(shù)組索引從零開始。 C# 中數(shù)組的工作方式與在大多數(shù)其他流行語言中的工作方式類似。但還有一些差異應(yīng)引起注意。

聲明數(shù)組時,方括號 ([]) 必須跟在類型后面,而不是標識符后面。在 C# 中,將方括號放在標識符后是不合法的語法。

int[] table; // not int table[]; 

另一細節(jié)是,數(shù)組的大小不是其類型的一部分,而在 C 語言中它卻是數(shù)組類型的一部分。這使您可以聲明一個數(shù)組并向它分配 int 對象的任意數(shù)組,而不管數(shù)組長度如何。

int[] numbers; // declare numbers as an int array of any size

numbers = new int[10];  // numbers is a 10-element array

numbers = new int[20];  // now it's a 20-element array

  聲明數(shù)組

C# 支持一維數(shù)組、多維數(shù)組(矩形數(shù)組)和數(shù)組的數(shù)組(交錯的數(shù)組)。下面的示例展示如何聲明不同類型的數(shù)組:

一維數(shù)組:

int[] numbers;
  
多維數(shù)組:

string[,] names;
  
數(shù)組的數(shù)組(交錯的):
 
byte[][] scores;
  
聲明數(shù)組(如上所示)并不實際創(chuàng)建它們。在 C# 中,數(shù)組是對象(本教程稍后討論),必須進行實例化。下面的示例展示如何創(chuàng)建數(shù)組:

一維數(shù)組:

int[] numbers = new int[5];
  
多維數(shù)組:

string[,] names = new string[5,4];
  
數(shù)組的數(shù)組(交錯的):

byte[][] scores = new byte[5][];
  
for (int x = 0; x < scores.Length; x++)
  
{  
scores[x] = new byte[4];
}
  
還可以有更大的數(shù)組。例如,可以有三維的矩形數(shù)組:

int[,,] buttons = new int[4,5,3];
  
甚至可以將矩形數(shù)組和交錯數(shù)組混合使用。例如,下面的代碼聲明了類型為 int的二維數(shù)組的三維數(shù)組的一維數(shù)組。

int[][,,][,] numbers;
  
    
初始化數(shù)組
  
C# 通過將初始值括在大括號 ({}) 內(nèi)為在聲明時初始化數(shù)組提供了簡單而直接了當(dāng)?shù)姆椒āO旅娴氖纠故境跏蓟煌愋偷臄?shù)組的各種方法。

注意    如果在聲明時沒有初始化數(shù)組,則數(shù)組成員將自動初始化為該數(shù)組類型的默認初始值。另外,如果將數(shù)組聲明為某類型的字段,則當(dāng)實例化該類型時它將被設(shè)置為默認值 null。

 一維數(shù)組

int[] numbers = new int[5] {1, 2, 3, 4, 5};
  
string[] names = new string[3] {"Matt", "Joanne", "Robert"};
  
可省略數(shù)組的大小,如下所示:

int[] numbers = new int[] {1, 2, 3, 4, 5};
  
string[] names = new string[] {"Matt", "Joanne", "Robert"};
  
如果提供了初始值設(shè)定項,則還可以省略 new運算符,如下所示:

int[] numbers = {1, 2, 3, 4, 5};
  
string[] names = {"Matt", "Joanne", "Robert"};
  
多維數(shù)組
int[,] numbers = new int[3, 2] { {1, 2}, {3, 4}, {5, 6} };
  
string[,] siblings = new string[2, 2] { {"Mike","Amy"}, {"Mary","Albert"} };
  
可省略數(shù)組的大小,如下所示:

int[,] numbers = new int[,] { {1, 2}, {3, 4}, {5, 6} };
  
string[,] siblings = new string[,] { {"Mike","Amy"}, {"Mary","Albert"} };
  
如果提供了初始值設(shè)定項,則還可以省略 new運算符,如下所示:

int[,] numbers = { {1, 2}, {3, 4}, {5, 6} };
string[,] siblings = { {"Mike", "Amy"}, {"Mary", "Albert"} };
  
交錯的數(shù)組(數(shù)組的數(shù)組)
可以像下例所示那樣初始化交錯的數(shù)組:
int[][] numbers = new int[2][] { new int[] {2,3,4}, new int[] {5,6,7,8,9} };
  
可省略第一個數(shù)組的大小,如下所示:

int[][] numbers = new int[][] { new int[] {2,3,4}, new int[] {5,6,7,8,9} };
  
-或-

int[][] numbers = { new int[] {2,3,4}, new int[] {5,6,7,8,9} };
  
請注意,對于交錯數(shù)組的元素沒有初始化語法。

訪問數(shù)組成員
訪問數(shù)組成員可以直接進行,類似于在 C/C++ 中訪問數(shù)組成員。例如,下面的代碼創(chuàng)建一個名為 numbers的數(shù)組,然后向該數(shù)組的第五個元素賦以 5:

int[] numbers = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
  
numbers[4] = 5;
  
下面的代碼聲明一個多維數(shù)組,并向位于 [1, 1]的成員賦以 5:

int[,] numbers = { {1, 2}, {3, 4}, {5, 6}, {7, 8}, {9, 10} };
  
numbers[1, 1] = 5;
  
下面聲明一個一維交錯數(shù)組,它包含兩個元素。第一個元素是兩個整數(shù)的數(shù)組,第二個元素是三個整數(shù)的數(shù)組:

int[][] numbers = new int[][] { new int[] {1, 2}, new int[] {3, 4, 5}};
  
下面的語句向第一個數(shù)組的第一個元素賦以 58,向第二個數(shù)組的第二個元素賦以 667:

numbers[0][0] = 58;
  
numbers[1][1] = 667;
  
數(shù)組是對象
  
在 C# 中,數(shù)組實際上是對象 。System.Array是所有數(shù)組類型的抽象基類型。可以使用 System.Array具有的屬性以及其他類成員。這種用法的一個示例是使用“長度”(Length)屬性獲取數(shù)組的長度。下面的代碼將 numbers數(shù)組的長度(為 5)賦給名為 LengthOfNumbers的變量:

int[] numbers = {1, 2, 3, 4, 5};
  
int LengthOfNumbers = numbers.Length;
  
System.Array 類提供許多有用的其他方法/屬性,如用于排序、搜索和復(fù)制數(shù)組的方法。

對數(shù)組使用 foreach
C# 還提供 foreach語句。該語句提供一種簡單、明了的方法來循環(huán)訪問數(shù)組的元素。例如,下面的代碼創(chuàng)建一個名為 numbers的數(shù)組,并用 foreach語句循環(huán)訪問該數(shù)組:

int[] numbers = {4, 5, 6, 1, 2, 3, -2, -1, 0};
  
foreach (int i in numbers)  
{      
System.Console.WriteLine(i);  
}
  
由于有了多維數(shù)組,可以使用相同方法來循環(huán)訪問元素,例如:

int[,] numbers = new int[3, 2] {{9, 99}, {3, 33}, {5, 55}};
  
foreach(int i in numbers)  
{  Console.Write("{0} ", i);}
  
該示例的輸出為:

9 99 3 33 5 55
  
不過,由于有了多維數(shù)組,使用嵌套 for循環(huán)將使您可以更好地控制數(shù)組元素。

posted on 2006-03-06 17:21 夢在天涯 閱讀(4504) 評論(1)  編輯 收藏 引用 所屬分類: C#/.NET

評論

# re: ArrayList的使用方法【轉(zhuǎn)載】 2007-05-25 19:58 bearhunter

學(xué)習(xí)  回復(fù)  更多評論   

公告

EMail:itech001#126.com

導(dǎo)航

統(tǒng)計

  • 隨筆 - 461
  • 文章 - 4
  • 評論 - 746
  • 引用 - 0

常用鏈接

隨筆分類

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1812153
  • 排名 - 5

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              国产精品日韩在线观看| 久久视频在线看| 欧美99在线视频观看| 猫咪成人在线观看| 欧美粗暴jizz性欧美20| 欧美不卡视频一区发布| 亚洲电影激情视频网站| 久久综合九色| 91久久久久| 亚洲淫性视频| 毛片精品免费在线观看| 欧美视频一区二区三区在线观看| 国产精品久久777777毛茸茸| 国产午夜精品久久久久久久| 亚洲国产成人在线播放| 亚洲网站啪啪| 久久亚洲一区二区三区四区| 亚洲茄子视频| 久久成人精品视频| 欧美区一区二| 国产亚洲一区二区三区在线观看 | 国产精品视频99| 国产一区二区三区免费不卡 | 午夜免费电影一区在线观看| 久久久久国产一区二区三区四区 | 亚洲国产高清在线| 亚洲专区一区| 欧美成人精品高清在线播放| 国产精品久久7| 亚洲人成艺术| 久久亚洲捆绑美女| 在线天堂一区av电影| 六月丁香综合| 国产欧美日韩综合| 亚洲一级二级| 亚洲国产欧美在线人成| 欧美亚洲一区二区三区| 欧美日韩亚洲系列| 亚洲欧洲精品一区二区三区波多野1战4| 亚洲视频中文| 国产精品视频内| 免费中文字幕日韩欧美| 国产亚洲制服色| 亚洲图片在线| 亚洲国产一区二区三区在线播 | 免费黄网站欧美| 国产一区导航| 亚洲综合日韩在线| 亚洲欧洲精品一区二区| 久久久久免费观看| 国产一区二区三区在线免费观看| 亚洲一区成人| 日韩网站在线观看| 欧美成人自拍视频| 亚洲国产欧美国产综合一区| 久久久久久97三级| 午夜精品影院| 国产麻豆精品久久一二三| 亚洲一级网站| 中文在线一区| 国产精品乱码| 欧美在线啊v一区| 亚洲一区精品在线| 国产精品外国| 久久精品男女| 久久综合五月| 亚洲精品日韩久久| 日韩小视频在线观看| 欧美日韩一区精品| 午夜视频在线观看一区二区| 亚洲欧美日韩一区二区三区在线观看 | 在线色欧美三级视频| 浪潮色综合久久天堂| 久久一区精品| 亚洲精品一区二区三区婷婷月| 亚洲电影观看| 欧美婷婷久久| 久久精品99| 牛夜精品久久久久久久99黑人| 亚洲人在线视频| 一区二区三区成人精品| 国产日韩欧美麻豆| 欧美国产一区二区在线观看| 欧美日韩无遮挡| 久久精品免费播放| 女人香蕉久久**毛片精品| 亚洲视频在线观看视频| 欧美在线观看日本一区| 亚洲国产精品va在看黑人| 亚洲精品乱码久久久久久按摩观| 国产精品qvod| 欧美大片在线看免费观看| 欧美日韩情趣电影| 久久都是精品| 欧美激情国产精品| 欧美在线精品免播放器视频| 国产精品一区二区黑丝| 蜜桃av一区| 久久久久久尹人网香蕉| 亚洲欧洲一区| 亚洲午夜女主播在线直播| 禁久久精品乱码| 99国产精品久久久久老师| 国产综合第一页| 亚洲福利在线视频| 国产精品热久久久久夜色精品三区| 久久国产精品久久久| 欧美成人一区二区三区在线观看| 午夜欧美大尺度福利影院在线看| 免费视频一区| 久久久久久高潮国产精品视| 欧美日韩第一区日日骚| 美女黄网久久| 国产亚洲精品一区二555| 亚洲精品一区二区三区不| 黄色成人免费观看| 亚洲一区二区在| 一本色道久久综合狠狠躁的推荐| 久久国产黑丝| 欧美一区1区三区3区公司| 欧美日韩亚洲高清| 亚洲黄网站在线观看| 在线观看精品一区| 欧美亚洲一级| 久久福利资源站| 国产精品二区影院| 亚洲精品乱码久久久久久久久 | 久久狠狠久久综合桃花| 欧美精品久久久久久| 免费日韩av| 极品日韩av| 欧美一区二区三区婷婷月色| 小黄鸭精品密入口导航| 国产精品成人va在线观看| 亚洲美女黄色片| 一区二区久久久久| 欧美日韩国产三区| 99精品视频免费观看| 亚洲视频999| 国产精品国产三级国产aⅴ入口 | 玖玖玖国产精品| 国产一区二区三区高清在线观看| 亚洲欧美日本日韩| 久久精品国产999大香线蕉| 国产欧美一区二区精品秋霞影院| 午夜免费日韩视频| 久久精品一区二区三区不卡| 国产偷国产偷亚洲高清97cao| 亚洲欧美综合网| 久久人人看视频| 亚洲国产日韩美| 欧美日韩精品一区二区三区四区 | 性色av香蕉一区二区| 一本到12不卡视频在线dvd| 在线视频精品一区| 欧美午夜在线一二页| 亚洲小说春色综合另类电影| 欧美在线三级| 影音先锋亚洲电影| 欧美成人免费网| 一区二区三区免费在线观看| 欧美一区二区免费视频| 狠狠久久婷婷| 欧美日本一区| 欧美一级免费视频| 亚洲丰满在线| 午夜一区二区三区不卡视频| 国内成人精品视频| 欧美成人免费在线视频| 亚洲一区免费网站| 欧美黄色大片网站| 亚洲欧美国产视频| 亚洲国产日韩欧美| 国产日本亚洲高清| 欧美激情视频一区二区三区免费| 亚洲午夜久久久| 亚洲电影有码| 久久精品99国产精品日本| 亚洲人成在线观看网站高清| 国产精品一区在线观看| 欧美福利一区二区三区| 欧美在线在线| 一区二区av在线| 亚洲成人在线视频播放 | 欧美成人午夜影院| 性做久久久久久久久| 91久久精品一区二区三区| 久久福利资源站| 亚洲特色特黄| 亚洲国产欧美在线 | 午夜免费日韩视频| 夜夜狂射影院欧美极品| 在线观看日韩国产| 国产一区二区三区精品久久久| 欧美日韩亚洲一区二区三区在线 | 亚洲无玛一区| 亚洲美女淫视频| 亚洲国产成人高清精品| 蜜桃久久精品乱码一区二区| 久久久久久高潮国产精品视|