當前位置:首頁 » 編程語言 » java集合類型

java集合類型

發布時間: 2022-09-14 08:57:38

java集合是什麼

Java集合是什麼:

Java 中的集合類庫可以幫助我們在程序設計中實現傳統的數據結構。

Java的集合類是一個用來存放對象的容器,有以下特點:

1、Java集合只能存放對象。加入添加了一個基本數據類型,會被自動裝箱後存入集合。

2、集合存放的是多個對象的引用,對象本身是在堆內存中的。

3、集合可以存放不同類型,不限數量的數據類型。

集合分三種:1、Set 2 、List 3、Map,下面進行具體介紹。

擴展鏈接:

主要內容:

1)手寫ArrayList

2)手寫單鏈表

3)手寫LinkedList

4)手寫HashMap

5)手寫HashSet

6)最新並發集合類

學習目標:

1. 掌握手寫ArrayList

2. 掌握手寫單鏈表

3. 掌握手寫LinkedList

4. 掌握手寫HashMap

5. 掌握手寫HashSet

6. 理解最新並發集合類底層原理

視頻課程小結:

01_集合提升訓練_手寫ArrayList_get_size_isEmpty_自定義異常

02_集合提升訓練_手寫ArrayList_構造方法_add

03_集合提升訓練_手寫ArrayList_toString_iterator

04_集合提升循環_手寫單鏈表_get

05_集合提升訓練_手寫單鏈表_add_remove_toString

06_集合提升訓練_手寫LinkedList

07_集合提升訓練_手寫LinkedList_添加內存分配圖

08_集合提升訓練_HashMap的原理和代碼准備

09_集合提升訓練_手寫HashMap的put

10_集合提升訓練_手寫HashMap的get_toString

11_集合提升訓練_手寫HashSet

12_集合提升訓練_新一代並發集合類


⑵ java中的集合有幾種

集合類是放在java.util.*;這個包里。集合類存放的都是對象的引用,而非對象本身,為了說起來方便些,我們稱集合中的對象就是指集合中對象的引用(reference)。引用的概念大家不會忘了吧,在前邊我們講數據類型時講的。
集合類型主要有3種:set(集)、list(列表)、map(映射)和Queue(隊列)。//隊列為jdk5中的加上的

(1) Set

集(set)是最簡單的一種集合,它的對象不按特定方式排序,只是簡單的把對象加入集合中,就像往口袋裡放東西。對集中成員的訪問和操作是通過集中對象的引用進行的,所以集中不能有重復對象。我們知道數學上的集合也是Set這個,集合裡面一定是沒有重復的元素的。

(2)List

列表(List)的主要特徵是其對象以線性方式存儲,沒有特定順序,只有一個開頭和一個結尾,當然,它與根本沒有順序的Set是不同的。它是鏈表嘛,一條鏈肯定有順序這個順序就不一定了。

(3)Map

映射(Map),這個在java里不是地圖的意思,其實地圖也是映射哈。它裡面的東西是鍵-值對(key-value)出現的,鍵值對是什麼呢?舉個例子,比如我們查字典,用部首查字法。目錄那個字就是鍵,這個字的解釋就是值。鍵和值成對出現。這樣說可以理解吧。這也是很常用的數據結構哦。

(4)Queue

在jdk5.0以前,通常的實現方式是使用java.util.List集合來模仿Queue。Queue的概念通過把對象添加(稱為enqueuing的操作)到List的尾部(即Queue的後部)並通過從List的頭部(即Queue的前部)提取對象而從 List中移除(稱為dequeuing的操作)來模擬。你需要執行先進先出的動作時可以直接使用Queue介面就可以了。

這4個東西,有時候功能還不太完善,需要有些子類繼承它的特性。Set的子介面有TreeSet,SortedSet,List的有ArrayList等,Map里有HashMap,HashTable等,Queue裡面有BlockingQueue等。我們來看看例子吧:

實踐: Set舉例

import java.util.*;

public class SetExample {

public static void main(String[] args) {

Set set = new HashSet(); //HashSet是Set的子介面

set.add("one");

set.add("second");

set.add("3rd");

set.add(new Integer(4));

set.add(new Float( 5.0F ));

set.add("second");

set.add(new Integer(4));

System.out.println(set);

}}

List舉例:

import java.util.*;

public class ListExample {

public static void main(String[] args) {

List list = new ArrayList();

list.add("one");

list.add("second");

list.add("3rd");

list.add(new Integer(4));

list.add(new Float( 5.0F ));

list.add("second");

list.add(new Integer(4));

System.out.println(list);

}}

Map舉例

import java.util.Map;

import java.util.HashMap;

import java.util.Iterator;

import java.io.FileReader;

public class MapExample {

public static void main(String[] args) throws java.io.FileNotFoundException {

Map word_count_map = new HashMap();

FileReader reader = new FileReader(args[0]);

Iterator words = new WordStreamIterator(reader);

while ( words.hasNext() ) {

String word = (String) words.next();

String word_lowercase = word.toLowerCase();

Integer frequency = (Integer)word_count_map.get(word_lowercase);

if ( frequency == null ) {

frequency = new Integer(1);

} else {

int value = frequency.intValue();

frequency = new Integer(value + 1);}

word_count_map.put(word_lowercase, frequency);

}

System.out.println(word_count_map);

}}

Queue舉例:

import java.io.IOException;

import java.io.PrintStream;

import java.util.LinkedList;

import java.util.Queue;

public class QueueTester {

public Queue<String> q; //發現了一個奇怪的語法,這個尖括弧是泛型聲明

public QueueTester() {q = new LinkedList<String>();}

public void testFIFO(PrintStream out) throws IOException {

q.add("First");

q.add("Second");

q.add("Third");

Object o;

while ((o = q.poll()) != null) {

out.println(o);}}

public static void main(String[] args) {

QueueTester tester = new QueueTester();

try { tester.testFIFO(System.out);

} catch (IOException e) {

e.printStackTrace(); } }}

⑶ java有哪些集合

Java集合主要有四種,分別為:List列表、Queue隊列、Set集合、Map映射。
List列表:有序的,可重復的;
Queue隊列:有序,可重復的;
Set集合:不可重復;
Map映射:無序,鍵唯一,值不唯一。

⑷ 在Java中,什麼是集合類,跟普通類有什麼區別

簡單的說,集合類有list列,set集和map映射 三大類!

Set(集):集合中的對象無排列順序,並且沒有重復的對象.

List(隊列):集合中的對象按照索引的順序排列,可以有重復的對象。

Map(映射):集合中的每一個元素都是一對一對的,包括一個key對象,一個Value對象(一個Key指向一個Value).集合中沒有重復的key對象,但是vaulue對象可以重復.
集合類是進行集合操作的。

⑸ JAVA的集合類型有哪些

Java API中所用的集合類,都是實現了Collection介面,他的一個類繼承結構如下:

Collection<--List<--Vector

Collection<--List<--ArrayList

Collection<--List<--LinkedList

Collection<--Set<--HashSet

Collection<--Set<--HashSet<--LinkedHashSet

Collection<--Set<--SortedSet<--TreeSet

Vector : 基於Array的List,其實就是封裝了Array所不具備的一些功能方便我們使用,它不可能走入Array的限制。性能也就不可能

超越Array。所以,在可能的情況下,我們要多運用Array。另外很重要的一點就是Vector「sychronized」的,這個也是Vector和

ArrayList的唯一的區別。

ArrayList:同Vector一樣是一個基於Array上的鏈表,但是不同的是ArrayList不是同步的。所以在性能上要比Vector優越一些,但

是當運行到多線程環境中時,可需要自己在管理線程的同步問題。

LinkedList:LinkedList不同於前面兩種List,它不是基於Array的,所以不受Array性能的限制。它每一個節點(Node)都包含兩方

面的內容:1.節點本身的數據(data);2.下一個節點的信息(nextNode)。所以當對LinkedList做添加,刪除動作的時候就不用像

基於Array的List一樣,必須進行大量的數據移動。只要更改nextNode的相關信息就可以實現了。這就是LinkedList的優勢。

List總結:

1. 所有的List中只能容納單個不同類型的對象組成的表,而不是Key-Value鍵值對。例如:[ tom,1,c ];

2. 所有的List中可以有相同的元素,例如Vector中可以有 [ tom,koo,too,koo ];

3. 所有的List中可以有null元素,例如[ tom,null,1 ];

4. 基於Array的List(Vector,ArrayList)適合查詢,而LinkedList(鏈表)適合添加,刪除操作。

HashSet:雖然Set同List都實現了Collection介面,但是他們的實現方式卻大不一樣。List基本上都是以Array為基礎。但是Set則是

在HashMap的基礎上來實現的,這個就是Set和List的根本區別。HashSet的存儲方式是把HashMap中的Key作為Set的對應存儲項。

⑹ java中的集合分類

JAVA集合框架特徵介紹(詳細的去看看動力節點的java基礎大全301集就知道了)

Collection介面結構

其中,有幾個比較常用的方法,比如方法add()添加一個元素到集合中,addAll()將指定集合中的所有元素添加到集合中,contains()方法檢測集合中是否包含指定的元素,toArray()方法返回一個表示集合的數組。Collection介面有三個子介面,下面詳細介紹。

1.List

List介面擴展自Collection,它可以定義一個允許重復的有序集合,從List介面中的方法來看,List介面主要是增加了面向位置的操作,允許在指定位置上操作元素,同時增加了一個能夠雙向遍歷線性表的新列表迭代器ListIterator。AbstractList類提供了List介面的部分實現,AbstractSequentialList擴展自AbstractList,主要是提供對鏈表的支持。下面介紹List介面的兩個重要的具體實現類,也是我們可能最常用的類,ArrayList和LinkedList。

ArrayList

通過閱讀ArrayList的源碼,我們可以很清楚地看到裡面的邏輯,它是用數組存儲元素的,這個數組可以動態創建,如果元素個數超過了數組的容量,那麼就創建一個更大的新數組,並將當前數組中的所有元素都復制到新數組中。假設第一次是集合沒有任何元素,下面以插入一個元素為例看看源碼的實現。

1、方法add(E e)向集合中添加指定元素。 public boolean add(E e) {
ensureCapacityInternal(size + 1); // Increments modCount!!
elementData[size++] = e; return true;
}2、此方法主要是確定將要創建的數組大小。 private void ensureCapacityInternal(int minCapacity) { if (elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA) {
minCapacity = Math.max(DEFAULT_CAPACITY, minCapacity);
}

ensureExplicitCapacity(minCapacity);
} private void ensureExplicitCapacity(int minCapacity) {
modCount++; if (minCapacity - elementData.length > 0)
grow(minCapacity);
}3、最後是創建數組,可以明顯的看到先是確定了添加元素後的大小之後將元素復制到新數組中。 private void grow(int minCapacity) { // overflow-conscious code int oldCapacity = elementData.length; int newCapacity = oldCapacity + (oldCapacity >> 1); if (newCapacity - minCapacity < 0)
newCapacity = minCapacity; if (newCapacity - MAX_ARRAY_SIZE > 0)
newCapacity = hugeCapacity(minCapacity); // minCapacity is usually close to size, so this is a win:
elementData = Arrays.Of(elementData, newCapacity);
}
LinkedList

同樣,我們打開LinkedList的源文件,不難看到LinkedList是在一個鏈表中存儲元素。

在學習數據結構的時候,我們知道鏈表和數組的最大區別在於它們對元素的存儲方式的不同導致它們在對數據進行不同操作時的效率不同,同樣,ArrayList與LinkedList也是如此,實際使用中我們需要根據特定的需求選用合適的類,如果除了在末尾外不能在其他位置插入或者刪除元素,那麼ArrayList效率更高,如果需要經常插入或者刪除元素,就選擇LinkedList。

2.Set

Set介面擴展自Collection,它與List的不同之處在於,規定Set的實例不包含重復的元素。在一個規則集內,一定不存在兩個相等的元素。AbstractSet是一個實現Set介面的抽象類,Set介面有三個具體實現類,分別是散列集HashSet、鏈式散列集LinkedHashSet和樹形集TreeSet。

散列集HashSet

散列集HashSet是一個用於實現Set介面的具體類,可以使用它的無參構造方法來創建空的散列集,也可以由一個現有的集合創建散列集。在散列集中,有兩個名詞需要關注,初始容量和客座率。客座率是確定在增加規則集之前,該規則集的飽滿程度,當元素個數超過了容量與客座率的乘積時,容量就會自動翻倍。

⑺ JAVA裡面set,map,list的區別是什麼(盡量詳細)

一、List介面
List是一個繼承於Collection的介面,即List是集合中的一種。List是有序的隊列,List中的每一個元素都有一個索引;第一個元素的索引值是0,往後的元素的索引值依次+1。和Set不同,List中允許有重復的元素。實現List介面的集合主要有:ArrayList、LinkedList、Vector、Stack。

ArrayList
ArrayList是一個動態數組,也是我們最常用的集合。它允許任何符合規則的元素插入甚至包括null。每一個ArrayList都有一個初始容量:

private static final int DEFAULT_CAPACITY = 10;

隨著容器中的元素不斷增加,容器的大小也會隨著增加。在每次向容器中增加元素的同時都會進行容量檢查,當快溢出時,就會進行擴容操作。所以如果我們明確所插入元素的多少,最好指定一個初始容量值,避免過多的進行擴容操作而浪費時間、效率。

size、isEmpty、get、set、iterator 和 listIterator 操作都以固定時間運行。add 操作以分攤的固定時間運行,也就是說,添加 n 個元素需要 O(n) 時間(由於要考慮到擴容,所以這不只是添加元素會帶來分攤固定時間開銷那樣簡單)。

ArrayList擅長於隨機訪問。同時ArrayList是非同步的。

LinkedList
同樣實現List介面的LinkedList與ArrayList不同,ArrayList是一個動態數組,而LinkedList是一個雙向鏈表。所以它除了有ArrayList的基本操作方法外還額外提供了get,remove,insert方法在LinkedList的首部或尾部。

由於實現的方式不同,LinkedList不能隨機訪問,它所有的操作都是要按照雙重鏈表的需要執行。在列表中索引的操作將從開頭或結尾遍歷列表(從靠近指定索引的一端,節約一半時間)。這樣做的好處就是可以通過較低的代價在List中進行插入和刪除操作。

與ArrayList一樣,LinkedList也是非同步的。如果多個線程同時訪問一個List,則必須自己實現訪問同步。一種解決方法是在創建List時構造一個同步的List:

List list = Collections.synchronizedList(new LinkedList(…));

Vector
與ArrayList相似,但是Vector是同步的。所以說Vector是線程安全的動態數組。它的操作與ArrayList幾乎一樣。

Stack
Stack繼承自Vector,實現一個後進先出的堆棧。Stack提供5個額外的方法使得Vector得以被當作堆棧使用。基本的push和pop方法,還有peek方法得到棧頂的元素,empty方法測試堆棧是否為空,search方法檢測一個元素在堆棧中的位置。Stack剛創建後是空棧。

二、Set介面
Set是一個繼承於Collection的介面,Set是一種不包括重復元素的Collection。它維持它自己的內部排序,所以隨機訪問沒有任何意義。與List一樣,它同樣運行null的存在但是僅有一個。由於Set介面的特殊性,所有傳入Set集合中的元素都必須不同,關於API方面。Set的API和Collection完全一樣。實現了Set介面的集合有:HashSet、TreeSet、LinkedHashSet、EnumSet。

HashSet
HashSet堪稱查詢速度最快的集合,因為其內部是以HashCode來實現的。集合元素可以是null,但只能放入一個null。它內部元素的順序是由哈希碼來決定的,所以它不保證set的迭代順序;特別是它不保證該順序恆久不變。

TreeSet
TreeSet是二叉樹實現的,基於TreeMap,生成一個總是處於排序狀態的set,內部以TreeMap來實現,不允許放入null值。它是使用元素的自然順序對元素進行排序,或者根據創建Set時提供的 Comparator 進行排序,具體取決於使用的構造方法。

LinkedHashSet
LinkedHashSet集合同樣是根據元素的hashCode值來決定元素的存儲位置,但是它同時使用鏈表維護元素的次序。這樣使得元素看起 來像是以插入順序保存的,也就是說,當遍歷該集合時候,LinkedHashSet將會以元素的添加順序訪問集合的元素。LinkedHashSet在迭代訪問Set中的全部元素時,性能比HashSet好,但是插入時性能稍微遜色於HashSet。

三、Map介面
Map與List、Set介面不同,它是由一系列鍵值對組成的集合,提供了key到Value的映射。在Map中它保證了key與value之間的一一對應關系。也就是說一個key對應一個value,所以它不能存在相同的key值,當然value值可以相同。實現map的集合有:HashMap、HashTable、TreeMap、WeakHashMap。

HashMap
以哈希表數據結構實現,查找對象時通過哈希函數計算其位置,它是為快速查詢而設計的,其內部定義了一個hash表數組(Entry[] table),元素會通過哈希轉換函數將元素的哈希地址轉換成數組中存放的索引,如果有沖突,則使用散列鏈表的形式將所有相同哈希地址的元素串起來,可能通過查看HashMap.Entry的源碼它是一個單鏈表結構。

HashTable
也是以哈希表數據結構實現的,解決沖突時與HashMap也一樣也是採用了散列鏈表的形式。HashTable繼承Dictionary類,實現Map介面。其中Dictionary類是任何可將鍵映射到相應值的類(如 Hashtable)的抽象父類。每個鍵和每個值都是一個對象。在任何一個 Dictionary 對象中,每個鍵至多與一個值相關聯。Map是」key-value鍵值對」介面。 HashTable採用」拉鏈法」實現哈希表不過性能比HashMap要低。

TreeMap
有序散列表,實現SortedMap介面,底層通過紅黑樹實現。

WeakHashMap
談WeakHashMap前先看一下Java中的引用(強度依次遞減)

強引用:普遍對象聲明的引用,存在便不會GC
軟引用:有用但並非必須,發生內存溢出前,二次回收
弱引用:只能生存到下次GC之前,無論是否內存足夠
虛引用:唯一目的是在這個對象被GC時能收到一個系統通知
以弱鍵實現的基於哈希表的Map。在 WeakHashMap 中,當某個鍵不再正常使用時,將自動移除其條目。更精確地說,對於一個給定的鍵,其映射的存在並不阻止垃圾回收器對該鍵的丟棄,這就使該鍵成為可終止的,被終止,然後被回收。丟棄某個鍵時,其條目從映射中有效地移除,因此,該類的行為與其他的 Map 實現有所不同。null值和null鍵都被支持。該類具有與HashMap類相似的性能特徵,並具有相同的效能參數初始容量和載入因子。像大多數集合類一樣,該類是不同步的。

四、總結
1、List、Set都是繼承自Collection介面,Map則不是。

2、List特點:元素有放入順序,元素可重復 ,Set特點:元素無放入順序,元素不可重復,重復元素會覆蓋掉,(注意:元素雖然無放入順序,但是元素在set中的位置是有該元素的HashCode決定的,其位置其實是固定的,加入Set 的Object必須定義equals()方法 ,另外list支持for循環,也就是通過下標來遍歷,也可以用迭代器,但是set只能用迭代,因為他無序,無法用下標來取得想要的值。)

3、Set和List對比:
Set:檢索元素效率低下,刪除和插入效率高,插入和刪除不會引起元素位置改變。
List:和數組類似,List可以動態增長,查找元素效率高,插入刪除元素效率低,因為會引起其他元素位置改變。

4、Map適合儲存鍵值對的數據

5、線程安全集合類與非線程安全集合類 :

LinkedList、ArrayList、HashSet是非線程安全的,Vector是線程安全的;
HashMap是非線程安全的,HashTable是線程安全的;
StringBuilder是非線程安全的,StringBuffer是線程安全的。

⑻ java集合有哪些

集合類型主要有3種:set(集)、list(列表)和map(映射)。

1、List(有序、可重復)

List里存放的對象是有序的,同時也是可以重復的,List關注的是索引,擁有一系列和索引相關的方法,查詢速度快。因為往list集合里插入或刪除數據時,會伴隨著後面數據的移動,所有插入刪除數據速度慢。

2、Set(無序、不能重復)

Set里存放的對象是無序,不能重復的,集合中的對象不按特定的方式排序,只是簡單地把對象加入集合中。

3、Map(鍵值對、鍵唯一、值不唯一)

Map集合中存儲的是鍵值對,鍵不能重復,值可以重復。根據鍵得到值,對map集合遍歷時先得到鍵的set集合,對set集合進行遍歷,得到相應的值。

(8)java集合類型擴展閱讀:

JAVA集合類型四種常見輸出方式:

1、Iterator:迭代輸出,是使用最多的輸出方式。

2、ListIterator:是Iterator的子介面,專門用於輸出List中的內容。

3、foreach輸出:JDK1.5之後提供的新功能,可以輸出數組或集合。

4、for循環。

代碼示例如下:

for的形式:for(inti=0;i<arr.size();i++){...}

foreach的形式:for(inti:arr){...}

iterator的形式:

Iterator it = arr.iterator();

while(it.hasNext()){ object o =it.next(); ...}

參考資料來源:網路:java集合類

⑼ JAVA裡面set,map,list的區別是什麼(盡量詳細)

java集合的主要分為三種類型:

  • Set(集)

  • List(列表)

  • Map(映射)

  • 要深入理解集合首先要了解下我們熟悉的數組:

    數組是大小固定的,並且同一個數組只能存放類型一樣的數據(基本類型/引用類型),而JAVA集合可以存儲和操作數目不固定的一組數據。 所有的JAVA集合都位於 java.util包中! JAVA集合只能存放引用類型的的數據,不能存放基本數據類型。

    簡單說下集合和數組的區別:(參考文章:《Thinking In Algorithm》03.數據結構之數組)

Java所有「存儲及隨機訪問一連串對象」的做法,array是最有效率的一種。

1、
效率高,但容量固定且無法動態改變。
array還有一個缺點是,無法判斷其中實際存有多少元素,length只是告訴我們array的容量。

2、Java中有一個Arrays類,專門用來操作array。
arrays中擁有一組static函數,
equals():比較兩個array是否相等。array擁有相同元素個數,且所有對應元素兩兩相等。
fill():將值填入array中。
sort():用來對array進行排序。
binarySearch():在排好序的array中尋找元素。
System.array():array的復制。

若撰寫程序時不知道究竟需要多少對象,需要在空間不足時自動擴增容量,則需要使用容器類庫,array不適用。所以就要用到集合。

那我們開始討論java中的集合。

集合分類:

Collection:List、Set
Map:HashMap、HashTable

⑽ 昆明電腦培訓學校告訴你面試都喜歡問的JAVA集合類

了一些所謂大公司的Java面試問題,發現對於JAVA集合類的使用都比較看重似的,而自己在這方面還真的是所真甚少,抽空也學習學習吧。



java.util包中就包含了一系列重要的集合類,而對於集合類,主要需要掌握的就是它的內部結構,以及遍歷集合的迭代模式。


介面:Collection


所有集合類的根類型,主要的一個介面方法:booleanadd(Ojbectc)

雖返回的是boolean,但不是表示添加成功與否,因為Collection規定:一個集合拒絕添加這個元素,無論什麼原因,都必須拋出異常,這個返回值表示的意義是add()執行後,集合的內容是否改了(就是元素有無數量、位置等變化)。類似的addAll,remove,removeAll,remainAll也是一樣的。


用Iterator模式實現遍歷集合


Collection有一個重要的方法:iterator(),返回一個Iterator(迭代子),用於遍歷集合的所有元素。Iterator模式可以把訪問邏輯從不同類的集合類中抽象出來,從而避免向客戶端暴露集合的內部結構。


for(Iteratorit=c.iterator();it.hasNext();){...}


不需要維護遍歷集合的「指針」,所有的內部狀態都有Iterator來維護,而這個Iterator由集合類通過工廠方法生成。


每一種集合類返回的Iterator具體類型可能不同,但它們都實現了Iterator介面,因此,我們不需要關心到底是哪種Iterator,它只需要獲得這個Iterator介面即可,這就是介面的好處,面向對象的威力。


要確保遍歷過程順利完成,電腦培訓http://www.kmbdqn.cn/認為必須保證遍歷過程中不更改集合的內容(Iterator的remove()方法除外),所以,確保遍歷可靠的原則是:只在一個線程中使用這個集合,或者在多線程中對遍歷代碼進行同步。


熱點內容
手機怎樣給程序加密軟體 發布:2025-01-12 06:47:11 瀏覽:824
地平線最高畫質筆記本要什麼配置才能玩 發布:2025-01-12 06:47:10 瀏覽:369
原神過主線任務腳本 發布:2025-01-12 06:34:51 瀏覽:514
醫保電子密碼在哪裡找到 發布:2025-01-12 06:34:38 瀏覽:349
安卓手機有網卻不能使用怎麼辦 發布:2025-01-12 06:25:20 瀏覽:213
arm存儲器映射 發布:2025-01-12 06:25:12 瀏覽:250
安卓系統個人字典有什麼用 發布:2025-01-12 06:13:37 瀏覽:929
geventpython安裝 發布:2025-01-12 06:13:34 瀏覽:339
放鬆解壓助睡眠直播 發布:2025-01-12 06:13:00 瀏覽:829
車載wince和安卓哪個好用 發布:2025-01-12 05:58:18 瀏覽:840