Java與面向對象程序設計實驗教程第6章-數(shù)組和集合類課件_第1頁
Java與面向對象程序設計實驗教程第6章-數(shù)組和集合類課件_第2頁
Java與面向對象程序設計實驗教程第6章-數(shù)組和集合類課件_第3頁
Java與面向對象程序設計實驗教程第6章-數(shù)組和集合類課件_第4頁
Java與面向對象程序設計實驗教程第6章-數(shù)組和集合類課件_第5頁
已閱讀5頁,還剩77頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第6章數(shù)組和集合類

對外經濟貿易大學信息學院

第6章數(shù)組和集合類對外經濟貿易大學信息學院content6.1數(shù)組6.2集合框架6.3枚舉類型實驗:數(shù)組content6.1數(shù)組6.1數(shù)組6.1.1數(shù)組的聲明6.1.2數(shù)組的創(chuàng)建6.1.3數(shù)組元素的初始化6.1.4數(shù)組的引用6.1.5二維數(shù)組6.1.6數(shù)組的排序6.1數(shù)組6.1.1數(shù)組的聲明數(shù)組的概念數(shù)組由同一類型的一連串對象或基本數(shù)據(jù)組成,封裝在同一個標識符(數(shù)組名稱)下。數(shù)組是對象動態(tài)初始化可以賦值給Object類型的變量在數(shù)組中可以調用類Object的所有方法數(shù)組的概念數(shù)組由同一類型的一連串對象或基本數(shù)據(jù)組成,封裝在同數(shù)組中的變量被稱作數(shù)組的元素元素沒有名字,通過數(shù)組名字和非負整數(shù)下標值引用數(shù)組元素。每個數(shù)組都有一個由publicfinal修飾的成員變量:length,即數(shù)組含有元素的個數(shù)(length可以是正數(shù)或零)數(shù)組元素數(shù)組中的變量被稱作數(shù)組的元素數(shù)組元素6.1.1數(shù)組的聲明聲明(Declaration)Type[]arrayName;

或者TypearrayName[];聲明數(shù)組時無需指明數(shù)組元素的個數(shù),也不為數(shù)組元素分配內存空間不能直接使用,必須經過初始化分配內存后才能使用6.1.1數(shù)組的聲明聲明(Declaration)數(shù)組聲明的例子例如:int[]myIntArray;StringmyStringArray[];CirclemyCircleArray[];數(shù)組聲明的例子例如:6.1.2數(shù)組的創(chuàng)建 arrayName=newType[componets number];用關鍵字new構成數(shù)組的創(chuàng)建表達式,可以指定數(shù)組的類型和數(shù)組元素的個數(shù)。元素個數(shù)可以是常量也可以是變量基本類型數(shù)組的每個元素都是一個基本類型的變量;引用類型數(shù)組的每個元素都是對象的的引用6.1.2數(shù)組的創(chuàng)建 arrayName=newType數(shù)組創(chuàng)建的例子例如:

int[]ai; aI=newint[10]; String[]aS; aS=newString[3]; CircleaC[]; aC=newCircle[5]或者可以將數(shù)組的聲明和創(chuàng)建一并執(zhí)行

intai[]=newint[10];可以在一條聲明語句中創(chuàng)建多個數(shù)組

String[]s1=newString[3],s2=newString[8];數(shù)組創(chuàng)建的例子例如:6.1.3數(shù)組元素的初始化數(shù)組元素的類型與聲明的數(shù)組數(shù)據(jù)類型保持一致,每一個數(shù)組元素都相當于一個變量,進行需要對象初始化?;绢愋偷臄?shù)組,可以在聲明數(shù)組名時,給出了數(shù)組的初始值。程序便會利用數(shù)組初始值創(chuàng)建數(shù)組并對它的各個元素進行初始化。例如:int a[]={22,33,44,55};6.1.3數(shù)組元素的初始化數(shù)組元素的類型與聲明的數(shù)組數(shù)據(jù)類6.1.3數(shù)組元素的初始化創(chuàng)建數(shù)組的時,如果沒有指定初始值,數(shù)組便被賦予默認值初始值?;绢愋蛿?shù)值數(shù)據(jù),默認的初始值為0;boolean類型數(shù)據(jù),默認值為false;引用類型元素的默認值為null。程序也可以在數(shù)組被構造之后改變數(shù)組元素值6.1.3數(shù)組元素的初始化創(chuàng)建數(shù)組的時,如果沒有指定初始值數(shù)組元素初始化的例子int[]aI;aI=newint[10];String[]aS;aS=newString[3];CircleaC[];aC=newCircle[5];intk=0;for(k=0;k<10;k++){aI[k]=k*k;}aS[0]="aaa";aS[1]=newString("bbb");aS[3]=newString("ccc");for(k=0;k<5;k++){aC[k]=newCircle();}數(shù)組元素初始化的例子int[]aI;aI=new6.1.4數(shù)組的引用

arrayName[index]

數(shù)組下標限制下標從零開始計數(shù),最大值為length–1,如果超過最大值,將會產生數(shù)組越界異常(ArrayIndexOutOfBoundsException)必須是int,short,byte,或者char.元素的個數(shù)即為數(shù)組的長度,可以通過arrayName.length引用6.1.4數(shù)組的引用arrayName[indepublicclassMyArray{publicstaticvoidmain(String[]args){intmyArray[];//聲明數(shù)組

myArray=newint[10];//創(chuàng)建數(shù)組

System.out.println("Index\t\tValue");for(inti=0;i<myArray.length;i++)System.out.println(i+"\t\t"+myArray[i]);//證明數(shù)組元素默認初始化為0//myArray[10]=100;//將產生數(shù)組越界異常

}}數(shù)組引用例子publicclassMyArray{數(shù)組引用例子數(shù)組變量名是一個引用publicclassAA{publicstaticvoidmain(String[]args){int[]a1={1,2,3,4,5};int[]a2;

a2=a1;

for(inti=0;i<a2.length;i++)a2[i]++;for(inti=0;i<a1.length;i++)System.out.println("a1["+i+"]="+a1[i]);}}運行結果:a1[0]=2a1[1]=3a1[2]=4a1[3]=5a1[4]=6數(shù)組變量名是一個引用publicclassAA{6.1.5二維數(shù)組二維數(shù)組的聲明Type[][]arrayName;

或者TypearrayName[][];二維數(shù)組的創(chuàng)建arrayName=newType[length1][length2]6.1.5二維數(shù)組二維數(shù)組的聲明二維數(shù)組例子int[][]a1;myArray可以存儲一個指向2維整數(shù)數(shù)組的引用。其初始值為[][]a2=newint[3][5];建立一個數(shù)組對象,把引用存儲到myArray。這個數(shù)組所有元素的初始值為零。int[][]a3={{8,1,2,2,9},{1,9,4},{3,7}};建立一個數(shù)組并為每一個元素賦值。二維數(shù)組例子int[][]a1;二維數(shù)組的長度publicclassAA{publicstaticvoidmain(String[]args){int[][]a3={{1,2,3},{3,4},{5,6,7,8}};

System.out.println(a3.length);System.out.println(a3[0].length);System.out.println(a3[1].length);System.out.println(a3[2].length);

}}運行結果3324二維數(shù)組的長度publicclassAA{二維數(shù)組的實現(xiàn)過程int[][]myArray;myArray=newint[3][];myArray[0]=newint[3];int[]x={0,2};int[]y={0,1,2,3,4};myArray[1]=x;myArray[2]=y;二維數(shù)組的實現(xiàn)過程int[][]myArray;int6.1.6數(shù)組的排序在java的API里面實現(xiàn)了數(shù)組排序功能。在java.util.Arrays類有靜態(tài)方法sort就是實現(xiàn)這個功能。6.1.6數(shù)組的排序在java的API里面實現(xiàn)了數(shù)組排序功publicclassTest6_5{ publicstaticvoidmain(String[]args){ Student[]ss=newStudent[]{newStudent(1,"iven"), newStudent(2,"tom"),newStudent(3,"rose"), newStudent(3,"jone")}; Arrays.sort(ss); for(inti=0;i<ss.length;i++){ System.out.println(ss[i]); } }}publicclassTest6_5{6.2集合框架6.2.1集合框架接口6.2.2Collection接口6.2.3List接口6.2.4Set接口6.2.5Map接口6.2.6Collection和Arrays6.2.7泛型6.2集合框架6.2.1集合框架接口集合框架Java語言的設計者對常用的數(shù)據(jù)結構和算法做了一些規(guī)范(接口)和實現(xiàn)(具體實現(xiàn)接口的類)。所有抽象出來的數(shù)據(jù)結構和算法統(tǒng)稱為Java集合框架(JavaCollectionFramework)集合框架Java語言的設計者對常用的數(shù)據(jù)結構和算法做了一些規(guī)Java與面向對象程序設計實驗教程第6章-數(shù)組和集合類課件6.2.1集合框架接口Java語言的設計者對常用的數(shù)據(jù)結構和算法做了一些規(guī)范(接口)和實現(xiàn)(具體實現(xiàn)接口的類)。所有抽象出來的數(shù)據(jù)結構和算法統(tǒng)稱為Java集合框架(JavaCollectionFramework)6.2.1集合框架接口Java語言的設計者對常用的數(shù)據(jù)結構6.2.1集合框架接口Java2中的集合框架提供了一套設計優(yōu)良的接口和類,使程序員操作成批的數(shù)據(jù)或對象元素極為方便。這些接口和類有很多對抽象數(shù)據(jù)類型操作的API,而這是我們常用的且在數(shù)據(jù)結構中熟知的。例如Maps,Sets,Lists,Arrays等。6.2.1集合框架接口Java2中的集合框架提供了一套設計幾種標準的集合接口簡化結構幾種標準的集合接口簡化結構6.2.2Collection接口Collection是最基本的集合接口,一個Collection代表一組Object,即Collection的元素(Elements)。所有實現(xiàn)Collection接口的類都必須提供兩個標準的構造函數(shù):無參數(shù)的構造函數(shù)用于創(chuàng)建一個空的Collection,有一個Collection參數(shù)的構造函數(shù)用于創(chuàng)建一個新的Collection,這個新的Collection與傳入的Collection有相同的元素。6.2.2Collection接口Collection是最迭代子不論Collection的實際類型如何,它都支持一個iterator()的方法,該方法返回一個迭代子,使用該迭代子即可逐一訪問Collection中每一個元素Iteratorit=collection.iterator();//獲得一個迭代子while(it.hasNext()){Objectobj=it.next();//得到下一個元素

}迭代子不論Collection的實際類型如何,它都支持一個i6.2.3List接口List是有序的Collection,使用此接口能夠精確的控制每個元素插入的位置。用戶能夠使用索引(元素在List中的位置)來訪問List中的元素。List允許有相同的元素。6.2.3List接口List是有序的Collection除了具有Collection接口必備的iterator()方法外,List還提供一個listIterator()方法,返回一個ListIterator接口,和標準的Iterator接口相比,ListIterator多了一些add()之類的方法,允許添加,刪除,設定元素,還能向前或向后遍歷。實現(xiàn)List接口的常用類有LinkedList、ArrayList、Vector和Stack。除了具有Collection接口必備的iterator()方6.2.4Set接口Set是一種不包含重復的元素的CollectionSet接口的常用具體實現(xiàn)有HashSet和TreeSet類6.2.4Set接口Set是一種不包含重復的元素的Coll6.2.5Map接口Map接口不是Collection接口的繼承。Map接口用于維護鍵和值。該接口描述了從不重復的鍵到值的映射。一個Map中不能包含相同的鍵,每個鍵只能映射一個值。6.2.5Map接口Map接口不是Collection接口Map接口其特點是元素是成對出現(xiàn)的,以鍵和值的形式體現(xiàn)出來,鍵要保證唯一性:常用類有:HashMap、Hashtable、TreeMap。Map接口其特點是元素是成對出現(xiàn)的,以鍵和值的形式體現(xiàn)出來,6.2.6Collections和Arrays兩個類提供了封裝器實現(xiàn)、數(shù)據(jù)結構算法和數(shù)組相關的應用。Collections類中定義了多種集合操作方法,實現(xiàn)了對集合操作方法,實現(xiàn)了對集合元素的排序、取極值、批量拷貝、集合結構轉換、循環(huán)移位以及匹配性檢查等功能Arrays類是對數(shù)組進行操作的工具類??梢杂靡粋€數(shù)組生成一個對應的List(asList),可以對數(shù)組元素進行排序(sort)、查找(binarySearch)、比較(equals)、填充(fill),等等。6.2.6Collections和Arrays兩個類提供了6.2.7泛型泛型的本質就是將所操作的數(shù)據(jù)類型參數(shù)化,也就是說,該數(shù)據(jù)類型被指定為一個參數(shù)。在Java中泛型主要是用來構建安全的集合6.2.7泛型泛型的本質就是將所操作的數(shù)據(jù)類型參數(shù)化,也就6.3枚舉類型舉類型是一個常量集合的數(shù)據(jù)類型。因為都是常量,所以一個枚舉類型中的字段名都要大寫。在JAVA中,枚舉類型的定義是通過“enum”關鍵字進行的。6.3枚舉類型舉類型是一個常量集合的數(shù)據(jù)類型。因為都是常量小結6.1數(shù)組6.2集合框架6.3枚舉類型小結6.1數(shù)組實驗:數(shù)組實驗10:數(shù)組BACK實驗:數(shù)組實驗10:數(shù)組知識點提示:理解數(shù)組是同類型對象的集合數(shù)組的元素是對象數(shù)組均需要聲明、初始化后才能使用掌握數(shù)組的定義、初始化和使用知識點提示:理解EndofChapter6EndofChapter6

第6章數(shù)組和集合類

對外經濟貿易大學信息學院

第6章數(shù)組和集合類對外經濟貿易大學信息學院content6.1數(shù)組6.2集合框架6.3枚舉類型實驗:數(shù)組content6.1數(shù)組6.1數(shù)組6.1.1數(shù)組的聲明6.1.2數(shù)組的創(chuàng)建6.1.3數(shù)組元素的初始化6.1.4數(shù)組的引用6.1.5二維數(shù)組6.1.6數(shù)組的排序6.1數(shù)組6.1.1數(shù)組的聲明數(shù)組的概念數(shù)組由同一類型的一連串對象或基本數(shù)據(jù)組成,封裝在同一個標識符(數(shù)組名稱)下。數(shù)組是對象動態(tài)初始化可以賦值給Object類型的變量在數(shù)組中可以調用類Object的所有方法數(shù)組的概念數(shù)組由同一類型的一連串對象或基本數(shù)據(jù)組成,封裝在同數(shù)組中的變量被稱作數(shù)組的元素元素沒有名字,通過數(shù)組名字和非負整數(shù)下標值引用數(shù)組元素。每個數(shù)組都有一個由publicfinal修飾的成員變量:length,即數(shù)組含有元素的個數(shù)(length可以是正數(shù)或零)數(shù)組元素數(shù)組中的變量被稱作數(shù)組的元素數(shù)組元素6.1.1數(shù)組的聲明聲明(Declaration)Type[]arrayName;

或者TypearrayName[];聲明數(shù)組時無需指明數(shù)組元素的個數(shù),也不為數(shù)組元素分配內存空間不能直接使用,必須經過初始化分配內存后才能使用6.1.1數(shù)組的聲明聲明(Declaration)數(shù)組聲明的例子例如:int[]myIntArray;StringmyStringArray[];CirclemyCircleArray[];數(shù)組聲明的例子例如:6.1.2數(shù)組的創(chuàng)建 arrayName=newType[componets number];用關鍵字new構成數(shù)組的創(chuàng)建表達式,可以指定數(shù)組的類型和數(shù)組元素的個數(shù)。元素個數(shù)可以是常量也可以是變量基本類型數(shù)組的每個元素都是一個基本類型的變量;引用類型數(shù)組的每個元素都是對象的的引用6.1.2數(shù)組的創(chuàng)建 arrayName=newType數(shù)組創(chuàng)建的例子例如:

int[]ai; aI=newint[10]; String[]aS; aS=newString[3]; CircleaC[]; aC=newCircle[5]或者可以將數(shù)組的聲明和創(chuàng)建一并執(zhí)行

intai[]=newint[10];可以在一條聲明語句中創(chuàng)建多個數(shù)組

String[]s1=newString[3],s2=newString[8];數(shù)組創(chuàng)建的例子例如:6.1.3數(shù)組元素的初始化數(shù)組元素的類型與聲明的數(shù)組數(shù)據(jù)類型保持一致,每一個數(shù)組元素都相當于一個變量,進行需要對象初始化?;绢愋偷臄?shù)組,可以在聲明數(shù)組名時,給出了數(shù)組的初始值。程序便會利用數(shù)組初始值創(chuàng)建數(shù)組并對它的各個元素進行初始化。例如:int a[]={22,33,44,55};6.1.3數(shù)組元素的初始化數(shù)組元素的類型與聲明的數(shù)組數(shù)據(jù)類6.1.3數(shù)組元素的初始化創(chuàng)建數(shù)組的時,如果沒有指定初始值,數(shù)組便被賦予默認值初始值?;绢愋蛿?shù)值數(shù)據(jù),默認的初始值為0;boolean類型數(shù)據(jù),默認值為false;引用類型元素的默認值為null。程序也可以在數(shù)組被構造之后改變數(shù)組元素值6.1.3數(shù)組元素的初始化創(chuàng)建數(shù)組的時,如果沒有指定初始值數(shù)組元素初始化的例子int[]aI;aI=newint[10];String[]aS;aS=newString[3];CircleaC[];aC=newCircle[5];intk=0;for(k=0;k<10;k++){aI[k]=k*k;}aS[0]="aaa";aS[1]=newString("bbb");aS[3]=newString("ccc");for(k=0;k<5;k++){aC[k]=newCircle();}數(shù)組元素初始化的例子int[]aI;aI=new6.1.4數(shù)組的引用

arrayName[index]

數(shù)組下標限制下標從零開始計數(shù),最大值為length–1,如果超過最大值,將會產生數(shù)組越界異常(ArrayIndexOutOfBoundsException)必須是int,short,byte,或者char.元素的個數(shù)即為數(shù)組的長度,可以通過arrayName.length引用6.1.4數(shù)組的引用arrayName[indepublicclassMyArray{publicstaticvoidmain(String[]args){intmyArray[];//聲明數(shù)組

myArray=newint[10];//創(chuàng)建數(shù)組

System.out.println("Index\t\tValue");for(inti=0;i<myArray.length;i++)System.out.println(i+"\t\t"+myArray[i]);//證明數(shù)組元素默認初始化為0//myArray[10]=100;//將產生數(shù)組越界異常

}}數(shù)組引用例子publicclassMyArray{數(shù)組引用例子數(shù)組變量名是一個引用publicclassAA{publicstaticvoidmain(String[]args){int[]a1={1,2,3,4,5};int[]a2;

a2=a1;

for(inti=0;i<a2.length;i++)a2[i]++;for(inti=0;i<a1.length;i++)System.out.println("a1["+i+"]="+a1[i]);}}運行結果:a1[0]=2a1[1]=3a1[2]=4a1[3]=5a1[4]=6數(shù)組變量名是一個引用publicclassAA{6.1.5二維數(shù)組二維數(shù)組的聲明Type[][]arrayName;

或者TypearrayName[][];二維數(shù)組的創(chuàng)建arrayName=newType[length1][length2]6.1.5二維數(shù)組二維數(shù)組的聲明二維數(shù)組例子int[][]a1;myArray可以存儲一個指向2維整數(shù)數(shù)組的引用。其初始值為[][]a2=newint[3][5];建立一個數(shù)組對象,把引用存儲到myArray。這個數(shù)組所有元素的初始值為零。int[][]a3={{8,1,2,2,9},{1,9,4},{3,7}};建立一個數(shù)組并為每一個元素賦值。二維數(shù)組例子int[][]a1;二維數(shù)組的長度publicclassAA{publicstaticvoidmain(String[]args){int[][]a3={{1,2,3},{3,4},{5,6,7,8}};

System.out.println(a3.length);System.out.println(a3[0].length);System.out.println(a3[1].length);System.out.println(a3[2].length);

}}運行結果3324二維數(shù)組的長度publicclassAA{二維數(shù)組的實現(xiàn)過程int[][]myArray;myArray=newint[3][];myArray[0]=newint[3];int[]x={0,2};int[]y={0,1,2,3,4};myArray[1]=x;myArray[2]=y;二維數(shù)組的實現(xiàn)過程int[][]myArray;int6.1.6數(shù)組的排序在java的API里面實現(xiàn)了數(shù)組排序功能。在java.util.Arrays類有靜態(tài)方法sort就是實現(xiàn)這個功能。6.1.6數(shù)組的排序在java的API里面實現(xiàn)了數(shù)組排序功publicclassTest6_5{ publicstaticvoidmain(String[]args){ Student[]ss=newStudent[]{newStudent(1,"iven"), newStudent(2,"tom"),newStudent(3,"rose"), newStudent(3,"jone")}; Arrays.sort(ss); for(inti=0;i<ss.length;i++){ System.out.println(ss[i]); } }}publicclassTest6_5{6.2集合框架6.2.1集合框架接口6.2.2Collection接口6.2.3List接口6.2.4Set接口6.2.5Map接口6.2.6Collection和Arrays6.2.7泛型6.2集合框架6.2.1集合框架接口集合框架Java語言的設計者對常用的數(shù)據(jù)結構和算法做了一些規(guī)范(接口)和實現(xiàn)(具體實現(xiàn)接口的類)。所有抽象出來的數(shù)據(jù)結構和算法統(tǒng)稱為Java集合框架(JavaCollectionFramework)集合框架Java語言的設計者對常用的數(shù)據(jù)結構和算法做了一些規(guī)Java與面向對象程序設計實驗教程第6章-數(shù)組和集合類課件6.2.1集合框架接口Java語言的設計者對常用的數(shù)據(jù)結構和算法做了一些規(guī)范(接口)和實現(xiàn)(具體實現(xiàn)接口的類)。所有抽象出來的數(shù)據(jù)結構和算法統(tǒng)稱為Java集合框架(JavaCollectionFramework)6.2.1集合框架接口Java語言的設計者對常用的數(shù)據(jù)結構6.2.1集合框架接口Java2中的集合框架提供了一套設計優(yōu)良的接口和類,使程序員操作成批的數(shù)據(jù)或對象元素極為方便。這些接口和類有很多對抽象數(shù)據(jù)類型操作的API,而這是我們常用的且在數(shù)據(jù)結構中熟知的。例如Maps,Sets,Lists,Arrays等。6.2.1集合框架接口Java2中的集合框架提供了一套設計幾種標準的集合接口簡化結構幾種標準的集合接口簡化結構6.2.2Collection接口Collection是最基本的集合接口,一個Collection代表一組Object,即Collection的元素(Elements)。所有實現(xiàn)Collection接口的類都必須提供兩個標準的構造函數(shù):無參數(shù)的構造函數(shù)用于創(chuàng)建一個空的Collection,有一個Collection參數(shù)的構造函數(shù)用于創(chuàng)建一個新的Collection,這個新的Collection與傳入的Collection有相同的元素。6.2.2Collection接口Collection是最迭代子不論Collection的實際類型如何,它都支持一個iterator()的方法,該方法返回一個迭代子,使用該迭代子即可逐一訪問Collection中每一個元素Iteratorit=collection.iterator();//獲得一個迭代子while(it.hasNext()){Objectobj=it.next();//得到下一個元素

}迭代子不論Collection的實際類型如何,它都支持一個i6.2.3List接口List是有序的Collecti

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論