工具類(lèi)及常用算法_第1頁(yè)
工具類(lèi)及常用算法_第2頁(yè)
工具類(lèi)及常用算法_第3頁(yè)
工具類(lèi)及常用算法_第4頁(yè)
工具類(lèi)及常用算法_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余66頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Java程序設(shè)計(jì)第7章工具類(lèi)及常用算法7.1

Java

語(yǔ)言基礎(chǔ)類(lèi)7.2

字符串和日期7.3

集合7.4

排序與查找7.5

泛型7.6

常用算法htt

唐大仕27.1

Java語(yǔ)言基礎(chǔ)類(lèi)Java程序設(shè)計(jì)Java語(yǔ)言基礎(chǔ)類(lèi)??????????????????????????????????????htt

唐大仕4Java程序設(shè)計(jì)JDK

APIhtt

唐大仕5Java程序設(shè)計(jì)Java基礎(chǔ)類(lèi)庫(kù)java.lang

Java語(yǔ)言的

類(lèi)庫(kù)Java是自動(dòng)導(dǎo)入java.lang.*

的java.util

實(shí)用工具java.io

標(biāo)準(zhǔn)輸入/輸出類(lèi)庫(kù)java.awtjava.sqljavax.swing

圖形用戶界面(GUI)的類(lèi)庫(kù)網(wǎng)絡(luò)功能的類(lèi)庫(kù)數(shù)據(jù)庫(kù)

的類(lèi)庫(kù)等等htt

唐大仕6Java程序設(shè)計(jì)閱讀JDK

API文檔查閱http/javase/8/docs/api/index.html文檔htt

/technetwork/java/javase/ation/jdk8-doc-downloads-2133158.html文檔http

/javase/8/docs/index.html網(wǎng)上有

格式的,有中文版htt

唐大仕7Java程序設(shè)計(jì)閱讀JDK源碼JDK

的源代碼安裝JDK后即有src.zip例如:在C:\Program

Files\Java\jdk\下htt

唐大仕8Java程序設(shè)計(jì)Object類(lèi)Object

類(lèi)是所有類(lèi)的直接或間接父類(lèi)讓所有的類(lèi)有了一致性htt

唐大仕9Java程序設(shè)計(jì)(1)

equals(

)講到了“==”與equals的區(qū)別簡(jiǎn)單地說(shuō),==是 是否相等,equals是內(nèi)容(含義)相等Integer

one

=

new

Integer

(1);Integer

anotherOne

=

new

Integer

(1);if(one==anotherOne)。。。//falseif(one.equals

(anotherOne))。。。//true如果覆蓋equals()方法,一般也要覆蓋hashCode()方法htt

唐大仕10Java程序設(shè)計(jì)(2)

getClass

(

)getClass()方法是final方法,它不能被重載它返回一個(gè)對(duì)象在運(yùn)行時(shí)所對(duì)應(yīng)的類(lèi)的表示void

PrintClassName(

Object

obj

)

{obj.getClass(

).getName(

)

);System.out.println(“

The

object’s

class

is

+}Object

creatNewInstanceOf

(object

obj)

{return

obj.getClass(

).newInstance(

);}htt

唐大仕11Java程序設(shè)計(jì)(3)

toString(

)toString()方法用來(lái)返回對(duì)象的字符串表示常用于顯示System.out.println

(

);另外,用于字符串的加號(hào)“current

is

+通過(guò)重載toString()方法,可以適當(dāng)?shù)仫@示對(duì)象的信息以進(jìn)行調(diào)試。htt

唐大仕12Java程序設(shè)計(jì)(4)

finalize(

)用于在

收集前清除對(duì)象,前面已經(jīng)講述。htt

唐大仕13Java程序設(shè)計(jì)Object的其他方法(5)

notify()、notifyAll()、wait()與線程相關(guān),以后講解htt

唐大仕14Java程序設(shè)計(jì)基本數(shù)據(jù)類(lèi)型的包裝類(lèi)Java的基本數(shù)據(jù)類(lèi)型用于定義簡(jiǎn)單的變量和屬性將十分方便,但為了與面 象的環(huán)境一致,Java中提供了基本數(shù)據(jù)類(lèi)型的包裝類(lèi)(wrapper),它們是這些基本類(lèi)型的面

象的代表。與8種基本數(shù)據(jù)類(lèi)型相對(duì)應(yīng),基本數(shù)據(jù)類(lèi)型的包裝類(lèi)也有8種,分別是:Character,Byte,Short,Integer,Long,F(xiàn)loat,Double,Boolean。htt

唐大仕15Java程序設(shè)計(jì)包裝類(lèi)的特點(diǎn)(1)這些類(lèi)都提供了一些常數(shù)如Integer.MAX_VALUE(整數(shù)最大值),

Double.NaN(非數(shù)字),Double.POSITIVE_INFINITY(正無(wú)窮)等。(2)提供了valueOf(String),toString()用于從字符串轉(zhuǎn)換及或轉(zhuǎn)換成字符串。(3)通過(guò)

xValue()方法可以得到所包裝的值Integer對(duì)象的intValue()方法。(4)對(duì)象中所包裝的值是不可改變的(immutable)。要改變對(duì)象中的值只有重新生成新的對(duì)象。(5)toString(),equals()等方法進(jìn)行了覆蓋。除了以上特點(diǎn)外,有的類(lèi)還提供了一些實(shí)用的方法以方便操作。例如,Double類(lèi)就提供了parseDouble(),max,min

方法等。htt

唐大仕16Java程序設(shè)計(jì)包裝與拆包JDK1.5

以上,有包Integer

I

=

5;oxing)及拆包(unboxing)即I=Integer.valueOf(5);int

i

=

I;即i=I.intValue();htt

唐大仕17Java程序設(shè)計(jì)Math類(lèi)Math類(lèi)用來(lái)完成一些常用的數(shù)

算public

final

static

double

E;//數(shù)學(xué)常量epublic

final

static

double

PI;//圓周率常量public

static

double

abs(doublea);//絕對(duì)值public

static

double

exp(doublea);//參數(shù)次冪ublic

static

double

floor(double

a);//不大于參數(shù)的最大整數(shù)

public

static

double

IEEE

remainder(double

f1,double

f2);//求余public

static

doublelog(double

a);//自然對(duì)數(shù)

public

static

double

max(double

a,double

b);//最大值public

static

float

min(float

a,float

b);//最小值例:TestMath.javapublic

static

double

pow(double

a,double

b);//乘方

public

static

double

random();//產(chǎn)生0和1(不含1)之間的偽隨機(jī)數(shù) public

static

double

rint(double

a);//四舍五入public

static

double

sqrt(double

a);//平方根public

static

double

sin(double

a);//正弦public

static

double

cos(double

a);//余弦public

static

double

tan(double

a);//正切public

static

double

asin(double

a);//反正弦public

static

double

acon(double

a);//反余弦public

static

double

atan(double

a);//反正切htt

唐大仕18Java程序設(shè)計(jì)System類(lèi)在Java中,系統(tǒng)屬性可以通過(guò)環(huán)境變量來(lái)獲得System.getProperty(String

name)方法獲得特定的系統(tǒng)屬性值System.getProperties()方法獲得一個(gè)Properties類(lèi)的對(duì)象,其中包含了所有可用的系統(tǒng)屬性信息在命令行運(yùn)行Java程序時(shí)可使用-D選項(xiàng)添加新的系統(tǒng)屬性如

java

–Dvar=value

MyProg示例:SystemProperties.javahtt

唐大仕197.2

字符串和日期Java程序設(shè)計(jì)字符串和日期??????????????????????????????????????htt

唐大仕21Java程序設(shè)計(jì)字符串字符串可以分為兩大類(lèi)String類(lèi)創(chuàng)建之后不會(huì)再做修改和變動(dòng),即immutableStringBuffer、StringBuilder類(lèi)創(chuàng)建之后允許再做更改和變化其中StringBuilder是JDK

1.5

增加的,它是非線程安全的特別注意在循環(huán)中使用String的+=可能會(huì)帶來(lái)效率問(wèn)題示例:StringAndStringBuffer.javahtt

唐大仕22Java程序設(shè)計(jì)String類(lèi)String

類(lèi)對(duì)象保存不可修改(immutable)的Unicode

字符序列String類(lèi)的下述方法能創(chuàng)建并返回一個(gè)新的String對(duì)象實(shí)例:

concat,

replace,replaceAll,

substring,

toLowerCase,

to

Upper

Case,

trim,toString.查找:endsWith,startsWith,indexOf,,lastIndexOf.比較:equals,equalsIgnoreCase,字符及長(zhǎng)度:charAt

,length.例:TestStringMethod.javaJdk

1.5

增加了format函數(shù)%1$,8.5f

%序號(hào)$

標(biāo)識(shí)寬度及精度轉(zhuǎn)換方式htt

唐大仕23Java程序設(shè)計(jì)字符串常量化(interned)除了immutable

特點(diǎn)外,還要注意String常量的問(wèn)題即同樣的字符串常量是合并的(是指向同一個(gè)

的)以保證“abc”==“abc”但是

abc” !=

new

String(“abc”)htt

唐大仕24Java程序設(shè)計(jì)StringBuffer類(lèi)StringBuffer類(lèi)對(duì)象保存可修改的Unicode

字符序列:StringBuilder類(lèi)似,它效率更高,不考慮線程安全性構(gòu)造方法StringBuffer()StringBuffer(int

capacity)StringBuffer(String

initialString)實(shí)現(xiàn)修改操作的方法:append,

insert,

reverse,

setCharAt,

setLength.htt

唐大仕25Java程序設(shè)計(jì)字符串的分割java.util.StringTokenizer

類(lèi)提供了對(duì)字符串進(jìn)行分割的功能。構(gòu)造StringTokenizer(String

str,

String

delim);該類(lèi)的重要方法有:public

int

countTokens();//分割串的個(gè)數(shù)public

boolean

hasMoreTokens();//是否還有分割串public

String

nextToken();//得到下一分割串例:TestStringTokenizer.java另String類(lèi)的

matches,

replaceAll,

split可以使用正則表達(dá)式(以后講)htt

唐大仕26Java程序設(shè)計(jì)日期類(lèi)Calendar得到一個(gè)實(shí)例Calendar.getInstance()//Locale.ZH.get(DAY_OF_MONTH).set

.add(HOUR,1).getDisplayName(DAY_OF_WEEK).roll(MONTH,

5),.setTime(date),

.getTime()Datenew

Date(),

new

Date(System.currentTimeMillis()).setTime(long),

.getTime()SimpleDateFormat(“yyyy-MM-dd

HH:mm:ss”).format,

.parse例CalendarDate.javaCalendarDaonggetTime()getTime()htt

唐大仕27Java程序設(shè)計(jì)Java8中的time

apijava.time.*java.time.format.*主要的類(lèi)Instant

時(shí)刻

Clock

時(shí)區(qū)

Duration

時(shí)間段常用的類(lèi)LocalDateTime.

of

.parse

.format

.plusLocalDate

LocalTime.

minusDateTimeFormatter示例CalendarDate8.javahtt

唐大仕287.3

集合類(lèi)Java程序設(shè)計(jì)集合類(lèi)??????????????????????????????????????htt

唐大仕30Java程序設(shè)計(jì)Collection

APICollection

API提供“集合”“收集”的功能Collection

API包含一系列的接口和類(lèi)htt

唐大仕31Java程序設(shè)計(jì)Collection

API包含三大類(lèi)Collection

接口:有兩個(gè)子接口List:(Collection的子接口)記錄元素的保存順序,且允許有重復(fù)元素Set:(Collection的子接口)不記錄元素的保存順序,且不允許有重復(fù)元素Map接口,即鍵-值對(duì)(key-value

pair)的集合htt

唐大仕32Java程序設(shè)計(jì)Collection接口<<interface>>Collection+add(element

:

Object) :

boolean+remove(element

:

Object)

:

boolean+size()

:

int+isEmpty() :

boolean+contains(element

:

Object)

:

boolean+iterator()

:

Iteratorhtt

唐大仕33Java程序設(shè)計(jì)Collection層次結(jié)構(gòu)(簡(jiǎn)化)<<interface>>Set<<interface>>ListArrayListVector<<interface>>Iterable<<interface>>Collection<<interface>>QueueHashSetTreeSetLinkedListPriorityQueueArrayDequeStackhtt

唐大仕34Java程序設(shè)計(jì)ListList接口:

線性表(linear

list)主要的實(shí)現(xiàn)類(lèi)是ArrayList.LinkedList,以及早期的VectorList接口public

interface

List<E>

extends

Collection<E>

{E

get(int

index);E

set(int

index,

E

element);void

add(int

index,

E

element);E

remove(int

index);int

indexOf(Object

o);....}htt

唐大仕35Java程序設(shè)計(jì)Iterator迭代器

Iterator

(所有的Collection

都能產(chǎn)生)Iterator

iterator

=

iterable.iterator();while(

iterator.hasNext())

doSomething(

iterator.next());htt

唐大仕36Java程序設(shè)計(jì)增強(qiáng)的for語(yǔ)句在JDK1

.

5

以后,增強(qiáng)的for語(yǔ)句(enhanced

for)或叫for-eachfor(

Element

e

:

list

)

doSomething(e);for

(Photo

photo

:

album){System.out.println(

photo.toString()

);}編譯器生成了Iterator的while(hasNext()){….next()}示例:TestList.javahtt

唐大仕37Java程序設(shè)計(jì)Stack棧是遵循“后進(jìn)先出”(Last

In重要線性數(shù)據(jù)結(jié)構(gòu)包含三個(gè)方法Out,

LIFO)原則public

Object

push(Object

item):將指定對(duì)象壓入棧中。Public

Object

pop():將棧最上面的元素從棧中取出,并返回這個(gè)對(duì)象。public

boolean

empty():判斷棧中沒(méi)有對(duì)象元素。示例:TestStack.javahtt

唐大仕38Java程序設(shè)計(jì)隊(duì)列Queue隊(duì)列(Queue),也是重要的線性數(shù)據(jù)結(jié)構(gòu)。隊(duì)列遵循“先進(jìn)先出”(

In

Out,F(xiàn)IFO)的原則固定在一端輸入數(shù)據(jù)(稱為入隊(duì)),另一端輸出數(shù)據(jù)(稱為出隊(duì))。重要的實(shí)現(xiàn)是LinkedList類(lèi),

示例:

TestQueue.java可拋出異類(lèi)的返回元素的Insert(

)add(e)offer(e)Remove(移除)remove()poll()Examine(檢查)element()peek()htt

唐大仕39Java程序設(shè)計(jì)幾個(gè)早期的類(lèi)或接口Vector,現(xiàn)多用ArrayList相當(dāng)于動(dòng)態(tài)數(shù)組(比JDK

1.0

中的ArrayList好),elementAt,Stack,現(xiàn)多用LinkedListStack是Vector的子類(lèi),push,pop,peekHashtable,現(xiàn)多用HashMapHashtable實(shí)現(xiàn)Map接口,參見(jiàn)Properties類(lèi)Enumeration,現(xiàn)多用IteratorEnumeration用另

式實(shí)現(xiàn)Iterator的功能如Vector可以得到枚舉器Enumeration<E>

e

=

v.elements();while(e.hasMoreElements())

doSomething(e.nex

ement())htt

唐大仕40Java程序設(shè)計(jì)Set集Set

集兩個(gè)重要的實(shí)現(xiàn)HashSet及TreeSet其中TreeSet的底層是用TreeMap來(lái)實(shí)現(xiàn)的Set中對(duì)象不重復(fù),即:hashCode()不等如果hashCode()相等,再看equals或==是否為false?例:TestSet.javahtt

唐大仕41Java程序設(shè)計(jì)Hashtable的實(shí)現(xiàn)注:String對(duì)象的哈希碼根據(jù)以下公式計(jì)算:

s[0]*31^(n-1)

+s[1]*31^(n-2)

+

...

+

s[n-1]使用int算法,這里s[i]是字符串的第i

個(gè)字符,n是字符串的長(zhǎng)度,^表示求冪。(空字符串的哈希值為0。)一般在覆蓋時(shí),要同時(shí)覆蓋hash

Code、equals方法htt

唐大仕42Java程序設(shè)計(jì)MapMap是鍵-值對(duì)的集合其中可以取到entrySet()、keySet()、values()、M

ntry是一個(gè)嵌套接口樹(shù)的算法Map類(lèi)的重要實(shí)現(xiàn)HashMap類(lèi)TreeMap類(lèi):用例:TestMap.javahtt

唐大仕43Java程序設(shè)計(jì)Map層次結(jié)構(gòu)(簡(jiǎn)化)HashMap<<interface>>MapMapHashtableTreeMap<<interface>>DictionaryPropertieshtt

唐大仕447.4

排序與查找Java程序設(shè)計(jì)排序與查找??????????????????????????????????????htt

唐大仕46Java程序設(shè)計(jì)排序與查找自編程序排序與查找如冒泡排序、選擇排序、快速排序等系統(tǒng)已有的排序與查找如Arrays類(lèi)及Collections

類(lèi)htt

唐大仕47Java程序設(shè)計(jì)Arrays類(lèi)Arrays類(lèi)是用于對(duì)數(shù)組進(jìn)行排序和搜索的類(lèi)。Arrays.asList(10,7,6,5,9)方法可以直接得到一個(gè)List對(duì)象Arrays類(lèi)提供了sort()和binarySearch()執(zhí)行binarySearch()之前應(yīng)調(diào)用sort()public

static

void

sort(List

list);public

static

void

sort(List

list,

Comparator

c);public

static

int

binarySearch(List

list,

Object

key);public

static

int

binarySearch(List

list,

Object

key,

Comparator

c);例:TestArraysSort.javahtt

唐大仕48Java程序設(shè)計(jì)關(guān)于比較要么對(duì)象是實(shí)現(xiàn)方法parablepublic

int

compareTo(Object

obj){return

this.price

((Book)obj).price;}要么提供一個(gè)java.

lang.

Comparator實(shí)現(xiàn)方法

public

int

compare(T

o

1

,

T

o2)這些方法的含義要與equals不htt

唐大仕49Java程序設(shè)計(jì)Collections類(lèi)此類(lèi)完全由在

collection

上進(jìn)行操作靜態(tài)方法組成.如sort,

binarySearch,

reverse等例TestCollectionsSort.java更一般地,使用Lambda表達(dá)式(Java8以上)例TestCollectionsSortByLambda.javahtt

唐大仕507.5

泛型Java程序設(shè)計(jì)泛型??????????????????????????????????????htt

唐大仕52Java程序設(shè)計(jì)泛型泛型(Generic)是JDK1.5

增加的最重要的Java語(yǔ)言特性。使用泛型可以針對(duì)不同的類(lèi)有相同的處理辦法Vector<String>

v

=

new

Vector<String>

();v.addElement(

one”

);String

s

=

v.elementAt(0);使用泛型的好處類(lèi)型更安全適用更廣泛,針對(duì)不同的類(lèi)有相同的處理辦法,但這些類(lèi)之間不一定有繼承關(guān)系。htt

唐大仕53Java程序設(shè)計(jì)自定義泛型自定義泛型類(lèi)GenericTreeClass.java自定義泛型方法GenericMethod.java注意:<>要寫(xiě)到方法名字的前面htt

唐大仕54Java程序設(shè)計(jì)對(duì)類(lèi)型的限定使用?如Collections的reverse方法reverse(List<?>

list)使用extends如Set的addAll方法addAll(Collection<?

extends

E>

col

)使用super如Collections的fill方法fill(List<?

super

T>

list, T

obj)htt

唐大仕55Java程序設(shè)計(jì)有時(shí)泛型寫(xiě)起來(lái)比較復(fù)雜Arrays.sort方法public

static

<T>

void

sort(T[]

a,

Comparator<?

super

T>

c)Stream.map

方法public

<R>

Stream<R>

map(Function<?

super

T,

?

extends

R>

mapper)Collections.max

方法public

static

<T

extends

Object

&

Comparable<?

super

T>>Tmax(Collection<?

extends

T>

coll)htt

唐大仕56Java程序設(shè)計(jì)協(xié)變與逆變協(xié)變(Covariance) ?

extends

TGenericCovariance.java原因:ListArray<Apple>不是ListArray<Fruit>的子類(lèi)但又想讓<Apple>當(dāng)作<Fruit>就

ListArray<?

extends

Fruit>逆變(Contravariance) ?

super

TGenericContrvariance.java原因:Basket<Apple>不是Basket<Fruit>的子類(lèi)但又想讓Comparator<Fruit>用于Comparator<Apple>就

Comparator<?

super

Fruit>注:?實(shí)際上是去類(lèi)型化(變成Object),只在編譯時(shí)檢查總之:

協(xié)變

用于獲取,用于out,用于Producer逆變

用于加入,用于in,

用于Consumer關(guān)于能否賦值,請(qǐng)見(jiàn)TCovarContravar.javahtt

唐大仕577.6

常用算法Java程序設(shè)計(jì)常用算法??????????????????????????????????????htt

唐大仕59Java程序設(shè)計(jì)常用算法常用的幾種算法這些算法屬于“通用算法”它們?cè)诮鉀Q許多問(wèn)題中都有應(yīng)用。遍試、迭代、遞歸和回溯htt

唐大仕60Java程序設(shè)計(jì)遍試遍試(窮舉,exhaust

algorithm)在有限的范圍內(nèi),可以對(duì)所有的值都進(jìn)行試驗(yàn)和判斷,從而找到滿足條件的值A(chǔ)ll_153.java

求三位的水仙花數(shù)All_628.java

求9999以內(nèi)的完全數(shù)All_220.java

求9999以內(nèi)的“相親數(shù)”遍試算法基本的模式for(;;){

if();

}htt

唐大仕61Java程序設(shè)計(jì)迭代迭代(iterative

algorithm)是多次利用同一公式進(jìn)行計(jì)算,每次將計(jì)算的結(jié)果再代入公式進(jìn)行計(jì)算,從而逐步

近精確解Sqrt.java

自編一個(gè)函數(shù)求平方根迭代的基本模式while()

{ x

=

f(x);

}htt

唐大仕62Java程序設(shè)計(jì)遞歸遞歸(recursive)就是一個(gè)過(guò)程調(diào)用過(guò)程本身。在遞歸調(diào)用中,一個(gè)過(guò)程執(zhí)行的某一步要用到它的上一步(或上幾步)的結(jié)果示例Fac.java

用遞歸方法求階乘CayleyTree.java

畫(huà)出樹(shù)遞歸算法的基本模式f(n){

f(n-1);

}htt

唐大仕63Java程序設(shè)計(jì)回溯回溯(back-track)回溯法也叫試探回溯法先選擇某一可能的線索進(jìn)行試探,每一步試探都有多種方式,將每一方式都一一試探,如果不符合條件就返回糾正,反復(fù)進(jìn)行這種試探再返回糾正,直到得出全部符合條件的答案或是問(wèn)題無(wú)解為止。示例

Queen8.java

八皇后問(wèn)題回溯法的其本模式

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論