一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - JAVA提高第九篇 集合體系

JAVA提高第九篇 集合體系

2021-01-28 12:06pony1223 Java教程

這篇文章主要為大家詳細(xì)介紹了JAVA提高第九篇集合體系的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

在經(jīng)過了前面的jdk6.0新特性的學(xué)習(xí)后,將進(jìn)一步深入學(xué)習(xí)jdk,因為集合的重要性,因此從集合開始入手分析:

一、集合概況

java是一種面向?qū)ο笳Z言,如果我們要針對多個對象進(jìn)行操作,那么首先必要將多個對象進(jìn)行保存起來之后,然后才能操作,那么我們肯定會想到用數(shù)組來進(jìn)行存放,但數(shù)組長度固定,不能滿足變化的要求。所以,java提供了集合。

數(shù)組與集合的區(qū)別:

數(shù)組:長度固定、可以存放基本類型/引用類型、數(shù)組中元素的類型必須一致

集合:長度可變自動擴(kuò)容、只能存放引用類型、集合中元素類型可以不一致但一般保持一致

二、集合體系

集合作為一個容器,可以存儲多個元素,但是由于數(shù)據(jù)結(jié)構(gòu)的不同,java提供了多種集合類。將集合類中共性的功能,不斷向上抽取,最終形成了集合體系結(jié)構(gòu)。

數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)存儲的方式

java中集合類的關(guān)系圖:

JAVA提高第九篇 集合體系

JAVA提高第九篇 集合體系

三、collection【單值接口】

collection是最基本的集合接口,一個collection代表一組object,即collection的元素(elements)。因為一些collection允許存放相同的元素而另一些不行。一些能有序而另一些不行,于是衍生出兩個子類接口list和set。

JAVA提高第九篇 集合體系

collection接口中常用方法:

a:添加功能
boolean add(object obj):向集合中添加一個元素
boolean addall(collection c):向集合中添加一個集合的元素。
b:刪除功能
void clear():刪除集合中的所有元素。
boolean remove(object obj):從集合中刪除指定的元素
boolean removeall(collection c):從集合中刪除一個指定的集合元素。
c:判斷功能
boolean isempty():判斷集合是否為空。
boolean contains(object obj):判斷集合中是否存在指定的元素。
boolean containsall(collection c):判斷集合中是否存在指定的一個集合中的元素。
d:遍歷功能
iterator iterator():就是用來獲取集合中每一個元素。
e:長度功能
int size():獲取集合中的元素個數(shù)
f:交集功能
boolean retainall(collection c):判斷兩個集合中是否有相同的元素。
g:把集合轉(zhuǎn)換成數(shù)組
object[] toarray():把集合變成數(shù)組。

list接口中常用方法:

首先我們知道list接口是collection接口的子類,所以也具備上面的方法,但除了上面的方法外,list接口中典型的arraylist底層是采用的數(shù)組結(jié)構(gòu),因此還具體被一些索引操作的方法,如下:

list的特有功能
a:添加功能
void add(int index, object obj):在指定位置添加元素
b:刪除功能
object remove(int index):根據(jù)指定索引刪除元素,并把刪除的元素返回。
c:修改功能
object set(int index, object obj):把指定索引位置的元素修改為指定的值,返回修改前的值。
d:獲取功能
int indexof(object o):返回指定元素在集合中第一次出現(xiàn)的索引
object get(int index):獲取指定位置的元素
listiterator listiterator():列表迭代器
e:截取功能
list sublist(int fromindex, int toindex):截取集合。

set接口中常用方法:

set接口下的元素?zé)o序,不可以重復(fù)。其下面分為hashset和treeset。

hashset

底層數(shù)據(jù)結(jié)構(gòu)是哈希表,線程不安全,效率高。
保證唯一性依賴兩個方法:hashcode()和equals()。
順序:
判斷hashcode()值是否相同。
相同:繼續(xù)走equals(),看返回值
如果true:就不添加到集合。
如果false:就添加到集合。
不同:就添加到集合。

treeset

底層數(shù)據(jù)結(jié)構(gòu)是二叉樹,線程不安全,效率高。
保證元素唯一性的方法時根據(jù)返回值是否是0。
保證排序的兩種方式:
自然排序(元素具備比較性):實(shí)現(xiàn)comparable接口
比較器排序(集合具備比較性):實(shí)現(xiàn)comparator接口

四、迭代器(iterator)

迭代器,從第一張java集合類圖關(guān)系中可以看出,除了中間的collection外,置于最頂上的左邊為迭代器iterator.

1.使用步驟:

1、通過集合對象獲取迭代器對象。
2、通過迭代器對象判斷。
3、通過迭代器對象獲取。

2.迭代器原理

由于多種集合的數(shù)據(jù)結(jié)構(gòu)不同,所以存儲方式不同,所以,取出方式也不同。那么這個時候,把判斷和獲取功能定義在了一個接口中,將來,遍歷哪種集合的時候,只要該集合內(nèi)部實(shí)現(xiàn)這個接口即可。【迭代器模式】

3.collection存儲字符串和自定義對象并通過迭代器遍歷

?
1
2
3
4
5
6
7
8
9
10
11
collection c = new arraylist();
c.add("hello");
c.add("world");
c.add("java");
 
iterator it = c.iterator();
while(it.hasnext())
{
  string s = (string)it.next();
  system.out.println(s);
}

4.listiterator迭代器是iterator的子接口

所以list的遍歷方式共有三種1、iterator迭代器2、listiterator迭代器3、普通for+get()

五、map<鍵值對接口>

map是一個鍵值對形式的集合。它的元素都是有鍵和值組成。map的鍵(key)是唯一的,值(value)可以重復(fù)。

JAVA提高第九篇 集合體系

map接口中常用方法:

a:添加功能
v put(k key ,v value) :當(dāng)key在集合中不存在是,添加元素;當(dāng)key存在時替換元素
b:判斷功能
boolean containskey (object key) :判斷指定的鍵是否在集合中存在
boolean containsvalue(object value):判斷指定的值是否在集合中存在
boolean isempty() :判斷集合是否為空
c:刪除功能
void clear():清除所有鍵值對數(shù)據(jù)
d:獲取功能
object get (object key) :根據(jù)鍵獲取值
set<k> keyset(): 所有鍵的集合
collection<v>values() :所有值的集合
set<map.entry<k,v>> entryset() :返回此映射中包含的映射關(guān)系的 set 視圖
e:長度功能
int size()

map包括hashmap、hashtable和treemap。其中,hashtable已基本被hashmap取代, 新代碼中基本不在使用hashtable
(注:hashmap支持null , hashtable不支持null )

map的遍歷方式:

1.鍵找值:

?
1
2
3
4
5
6
7
8
9
10
11
public static void main(string[] args) {
  map<string,integer> map = new hashmap<string,integer>();
  map.put("二陽",23);
  map.put("二崢",24);
  map.put("二光",25);
  set<string> keys=map.keyset();  //把鍵其中起來,存入到set集合中.
  for(string key:keys){    //遍歷鍵集合,獲取每一個鍵。增強(qiáng)for
   integer value=map.get(key);  //讓鍵去找值 get(object key)
   system.out.println(key+"***"+value);
  }
}

 2.鍵值對

?
1
2
3
4
5
6
7
8
9
10
11
public static void main(string[] args) {
  map<string,integer> map = new hashmap<string,integer>();
  map.put("二陽",23);
  map.put("二崢",24);
  map.put("二光",25);
  set<string> keys=map.keyset();  //把鍵其中起來,存入到set集合中.
  for(string key:keys){    //遍歷鍵集合,獲取每一個鍵。增強(qiáng)for
   integer value=map.get(key);  //讓鍵去找值 get(object key)
   system.out.println(key+"***"+value);
  }
}

通過上面的學(xué)習(xí),讓我們對集合的類圖有了大體的認(rèn)識,后面我們將會逐一深入我們最常用的比如:arraylist hashmap等知識點(diǎn)的深入學(xué)習(xí)。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://www.cnblogs.com/pony1223/p/7745882.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品男人的天堂 | 好大好湿好硬好爽好深免费视频 | 国产大片视频免费观看 | 色吧五月婷婷 | 色欲麻豆国产福利精品 | 国产草草视频 | 亚洲国产99999在线精品一区 | 青青久久精品国产免费看 | 日韩精品一区二区三区免费视频 | 女人张开腿 让男人桶个爽 免费观看 | 国产欧美一区二区精品久久久 | 日韩香蕉视频 | bt天堂在线观看国产 | 大陆国语自产精品视频在 | 好男人社区www影院在线观看 | 国产-第1页-草草影院 | 亚洲另类老妇videos | 日本视频一区在线观看免费 | 免费被靠视频动漫 | 国产精品福利在线观看免费不卡 | 午夜精品久久久久久久99蜜桃i | 高清在线观看mv的网址免费 | 女毛片 | 91精品91| 二次元美女内裤凹陷太深 | 射逼网| 11 13加污女qq看他下面 | 国产精品一区久久精品 | 好吊操这里有精品 | 亚洲欧美在线观看一区二区 | 精品国产福利在线 | 国产综合久久久久久 | 久久精品亚洲国产AV涩情 | 男生和女生艹逼 | 国产一页 | h片在线看 | 日本免费三区 | 美女脱了内裤让男桶爽 | 污文啊好棒棒啊好了 | 美女bbxx美女bbb | 国产拍拍拍免费专区在线观看 |