一、Java集合的整體介紹二、接口
接口:?jiǎn)瘟袛?shù)據(jù),定義了存取一組對(duì)象的方法的集合 。
接口是 List、Set 和 Queue 接口的父接口,該接口里定義的方法 既可用于操作 Set 集合,也可用于操作 List 和 Queue 集合 。JDK不提供此接口的任何直接實(shí)現(xiàn),而是提供更具體的子接口(如:Set和List) 實(shí)現(xiàn) 。Java 集合會(huì)丟失容器中所有對(duì)象的數(shù)據(jù)類型,把所有對(duì)象都當(dāng)成類型處理; 但可以增加泛型,來(lái)實(shí)現(xiàn)Java 集合記住容器中對(duì)象的數(shù)據(jù)類型 。
1、接口方法
方法
方法說(shuō)明
add( obj)
添加元素
( coll)
添加整個(gè)集合
int size()
獲取有效元素的個(gè)數(shù)
void clear()
清空集合
()
是否是空集合
( obj)
是否包含某個(gè)元素,是通過元素的方法來(lái)判斷是否是同一個(gè)對(duì)象
( c)
是否包含某個(gè)元素 , 也是調(diào)用元素的方法來(lái)拿兩個(gè)集合的元素挨個(gè)比較 。
( obj)
通過元素的方法判斷是否是要?jiǎng)h除的那個(gè)元素 。只會(huì)刪除找到的第一個(gè)元素
( coll)
刪除集合中所有的此元素(取當(dāng)前集合的詞集)
( c)
取兩個(gè)集合中的交集(把交集的結(jié)果存在當(dāng)前集合中,不影響c)
( obj)
判斷集合是否相等
[] ()
轉(zhuǎn)成對(duì)象數(shù)組
()
獲取集合對(duì)象的哈希值
()
返回迭代器對(duì)象,用于集合遍歷
package Collection接口;import org.junit.Test;import java.util.*;public class CollectionTest {@Testpublic void test1(){Collection coll= new ArrayList();coll.add(123);coll.add(456);coll.add(new String("Jerry"));Person p = new Person("Tom",15);coll.add(p);coll.add(true);// 1.contains(object obj):判斷當(dāng)前集合中是否包含obj// 在判斷時(shí)會(huì)調(diào)用obj對(duì)象所在類的equals()boolean contains = coll.contains(123);System.out.println(contains);//trueSystem.out.println(coll.contains(new String("Jerry")));//trueSystem.out.println(coll.contains(new Person("Tom", 15)));//false ---> true 進(jìn)行重寫equals方法System.out.println(coll.contains(p));//true//2.containsAll(Collection coll1) : 判斷形參coll1中的所有元素是否都存在于當(dāng)前集合中Collection coll1 = Arrays.asList(123,456);System.out.println(coll.containsAll(coll1));//true}@Testpublic void test2(){//3.remove(Object obj):Collection coll= new ArrayList();coll.add(123);coll.add(456);coll.add(new String("Jerry"));Person p = new Person("Tom",15);coll.add(p);coll.add(false);coll.remove(1234);System.out.println(coll);//[123, 456, Jerry, Collection接口.For_Iterator.Person{name='Tom', age=15}, false]coll.remove(new Person("Tom",15));System.out.println(coll);//[123, 456, Jerry, false]//4.removeAll(Collection coll1):從當(dāng)前的集合中移除從從coll1中的所有元素Collection coll1 = Arrays.asList(123,456);coll.removeAll(coll1);System.out.println(coll);//[Jerry, false]}@Testpublic void test3(){Collection coll = new ArrayList();coll.add(123);coll.add(456);coll.add(new String("Jerry"));Person p = new Person("Tom",15);coll.add(p);coll.add(false);/* // 5.retainAll(Collection coll): 交集 :獲取當(dāng)前集合和從coll1集合的交集,并返回給當(dāng)前集合 Collection coll1 = Arrays.asList(123,456,789); coll.retainAll(coll1); System.out.println(coll); //[123, 456]*///6.equals(Object obj) :Collection coll1 = new ArrayList();//Array是有序的,如果add的順序不同,依然輸出falsecoll1.add(123);coll1.add(456);coll1.add(new String("Jerry"));coll1.add(new Person("Tom",15));coll1.add(false);System.out.println(coll.equals(coll1));//true}@Testpublic void test4(){Collection coll= new ArrayList();coll.add(123);coll.add(456);coll.add(new String("Jerry"));Person p = new Person("Tom",15);coll.add(p);coll.add(false);// 7.hasCode() : 返回當(dāng)前對(duì)象的哈希值System.out.println(hashCode());//8.集合 --> 數(shù)組 :toArray()Object[] arr = coll.toArray();for (int i = 0; i集合 【注意asList要用包裝類 , 否則將視為一個(gè)元素】List strings = Arrays.asList(new String[]{ "AA", "BB", "CC", "DD"});System.out.println(strings);//[AA, BB, CC, DD]List ints = Arrays.asList(new int[]{ 12, 34, 56});System.out.println(ints.size());// 1List ints1 = Arrays.asList(new Integer[]{ 12, 34, 56});System.out.println(ints1.size()); // 3// 9.iterator(): 返回Iterator()接口的實(shí)例,用于遍歷集合元素 。放在IteratorTest.java 中測(cè)試}}class Person{private String name;private int age;public Person(){}public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Person person = (Person) o;return age == person.age && Objects.equals(name, person.name);}@Overridepublic String toString() {return "Collection接口.For_Iterator.Person{" +"name='" + name + ''' +", age=" + age +'}';}}
2、子接口一:List
List:元素有序,可重復(fù)的集合 。
鑒于Java中數(shù)組用來(lái)存儲(chǔ)數(shù)據(jù)的局限性java簡(jiǎn)單實(shí)現(xiàn)一個(gè)阻塞隊(duì)列,我們通常使用List替代數(shù)組
List集合類中元素有序、且可重復(fù),集合中的每個(gè)元素都有其對(duì)應(yīng)的順序索引 。
List容器中的元素都對(duì)應(yīng)一個(gè)整數(shù)型的序號(hào)記載其在容器中的位置,可以根據(jù)序號(hào)存取容器中的元素 。
List接口的主要方法:
【除了從集合繼承的方法外 , List 集合里添加了一些根據(jù)索引來(lái)操作集合元素的方法】
方法
方法說(shuō)明
void add(int index,ele)
在index位置插入ele元素
(int index,eles)
從index位置開始將eles中的所有元素添加進(jìn)來(lái)
get(int index)
獲取指定index位置的元素
int ( obj)
返回obj在集合中首次出現(xiàn)的位置
int ( obj)
返回obj在當(dāng)前集合中末次出現(xiàn)的位置
(int index)
移除指定index位置的元素java簡(jiǎn)單實(shí)現(xiàn)一個(gè)阻塞隊(duì)列 , 并返回此元素
set(int index,ele)
設(shè)置指定index位置的元素為ele
List (int , int )
返回從到位置的子集合
① ?
作為L(zhǎng)ist 接口的主要實(shí)現(xiàn)類;線程不安全,效率高
類是一個(gè)可以動(dòng)態(tài)修改的數(shù)組,與普通數(shù)組的區(qū)別就是它是沒有固定大小的限制,我們可以添加或刪除元素 。繼承了,并實(shí)現(xiàn)了 List 接口 。
是一個(gè)數(shù)組隊(duì)列,提供了相關(guān)的添加、刪除、修改、遍歷等功能 。
package List接口;import org.junit.Test;import java.util.ArrayList;import java.util.Arrays;import java.util.List;/** * 常用方法總結(jié): * 增:add(Object obj) * 刪:remove(int index) / remove(Object obj * 改:set(int index,Object ele) * 查:get(int index,Object ele) * 插:add(int index,Object obj) * 長(zhǎng)度:size() */public class ListTest {@Testpublic void test1(){ArrayList list = new ArrayList();list.add(123);list.add(456);list.add("AA");list.add(new Person("Tom",12));list.add(false);System.out.println(list);//[123, 456, AA, For_Iterator.Person{name='Tom', age=12}, false]//1. void add (int index, Object ele) : 在index位置插入ele元素list.add(1,"BB");System.out.println(list);//[123, BB, 456, AA, For_Iterator.Person{name='Tom', age=12}, false]List list1 = Arrays.asList(1,2,3);//list.addAll(list1); //[123, BB, 456, AA, For_Iterator.Person{name='Tom', age=12}, false, 1, 2, 3]list.add(list1);//[123, BB, 456, AA, For_Iterator.Person{name='Tom', age=12}, false, [1, 2, 3]]System.out.println(list);//2.Object get(int index) : 獲取指定index位置的元素System.out.println(list.get(2));// 456}@Testpublic void test2(){ArrayList list = new ArrayList();list.add(123);list.add(456);list.add("AA");list.add(new Person("Tom",12));list.add(false);//3.int index(Object obj) : 返回obj在集合中首次出現(xiàn)的位置int index = list.indexOf(123);System.out.println(index);// 0//4.int lastIndexOf(Object obj) : 返回obj在集合中末次出現(xiàn)的位置int lastIndexOf = list.lastIndexOf(456);System.out.println(lastIndexOf);// 1//5.Object remove(int index) : 移除指定index位置的元素,并返回此元素Object obj = list.remove(0);System.out.println(obj);// 123System.out.println(list);// [456, AA, For_Iterator.Person{name='Tom', age=12}, false]//6.Object set(int index,Object ele) : 設(shè)置指定index位置的元素elelist.set(0,123);System.out.println(list);//[123, AA, For_Iterator.Person{name='Tom', age=12}, false]//7.list subList(int formIndex,int toIndex) : 返回從fromIndex到toIndex位置的左閉右開區(qū)間List subList = list.subList(2, 4);System.out.println(subList);//[For_Iterator.Person{name='Tom', age=12}, false]System.out.println(list);//[123, AA, For_Iterator.Person{name='Tom', age=12}, false]}}
②
對(duì)于頻繁的插入、刪除操作、使用此類的效率比高;底層使用的是雙向列表存儲(chǔ)
鏈表()是一種常見的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu) , 是一種線性表,但是并不會(huì)按線性的順序存儲(chǔ)數(shù)據(jù),而是在每一個(gè)節(jié)點(diǎn)里存到下一個(gè)節(jié)點(diǎn)的地址 。
鏈表可分為單向鏈表和雙向鏈表 。
一個(gè)單向鏈表包含兩個(gè)值: 當(dāng)前節(jié)點(diǎn)的值和一個(gè)指向下一個(gè)節(jié)點(diǎn)的鏈接 。
一個(gè)雙向鏈表有三個(gè)整數(shù)值: 數(shù)值、向后的節(jié)點(diǎn)鏈接、向前的節(jié)點(diǎn)鏈接 。
【使用方式與基本相同,在此就不進(jìn)行代碼上的重復(fù)】
③
作為L(zhǎng)ist 接口古老實(shí)現(xiàn)類;線程安全,效率低;
面試題
和的異同?
二者都線程不安全 , 相對(duì)線程安全的,執(zhí)行效率高 。
此外,是實(shí)現(xiàn)了基于動(dòng)態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu),基于鏈表的數(shù)據(jù)結(jié)構(gòu) 。對(duì)于隨機(jī)訪問get和set,優(yōu)于,因?yàn)橐苿?dòng)指針 。對(duì)于新增和刪除操作add(特指插入)和,比較占優(yōu)勢(shì),因?yàn)橐苿?dòng)數(shù)據(jù) 。
和的區(qū)別?
和幾乎是完全相同的,唯一的區(qū)別在于是同步類(),屬于強(qiáng)同步類 。因此開銷就比要大 , 訪問要慢 。正常情況下,大多數(shù)的Java程序員使用而不是,因?yàn)橥酵耆梢杂沙绦騿T自己來(lái)控制 。每次擴(kuò)容請(qǐng)求其大小的2倍空間,而是1.5倍 。還有一個(gè)子類Stack 。
3、子接口二:Set
Set:元素?zé)o序,不可重復(fù)的集合 。儲(chǔ)存無(wú)序的 ≠ 隨機(jī)性,根據(jù)數(shù)據(jù)的hash值順序進(jìn)行添加
Set接口是的子接口,set接口沒有提供額外的方法 。
Set集合不允許包含相同的元素,如果是把兩個(gè)相同的元素加入同一個(gè) Set 集合中 , 則添加操作失敗 。Set 判斷兩個(gè)對(duì)象是否相同不是使用 == 運(yùn)算符,而是根據(jù) () 方法 。
①
作為Set接口的主要實(shí)現(xiàn)類 ;線程不安全 ,可以存儲(chǔ)null值
:作為的子類;遍歷其內(nèi)部數(shù)據(jù)時(shí),可以按照添加的順序遍歷
import org.junit.Test;import java.util.*;public class SetTest {/* Set接口 :1. 儲(chǔ)存無(wú)序的 ≠ 隨機(jī)性,根據(jù)數(shù)據(jù)的hash值順序進(jìn)行添加 2. 不可重復(fù)的數(shù)據(jù) */@Testpublic void HashTest(){Set set = new HashSet();set.add(456);set.add(123);set.add(123);set.add("AA");set.add(new Person("Tom",12));//set.add(new User("Tom",12));set.add("cc");set.add(false);Iterator iterator = set.iterator();while(iterator.hasNext()){System.out.print(iterator.next() + " ");//AA cc Collection接口.For_Iterator.Person{name='Tom', age=12} false 456 123}}@Testpublic void LinkedHashTest(){/* LinkedHashSet作為HashSet的子類,在添加數(shù)據(jù)的同時(shí),每個(gè)數(shù)據(jù)還維護(hù)了兩個(gè)引用,記錄此數(shù)據(jù)前后兩個(gè)數(shù)據(jù) 。優(yōu)點(diǎn) :對(duì)于頻繁的遍歷操作,LinkedHashSet的效率要高于HashSet */Set set = new LinkedHashSet();set.add(456);set.add(123);set.add(123);set.add("AA");set.add(new Person("Tom",12));set.add("cc");set.add(false);Iterator iterator = set.iterator();while(iterator.hasNext()) {System.out.print(iterator.next() + " ");//456 123 AA Collection接口.For_Iterator.Person{name='Tom', age=12} cc false}}}
②
:可以按照對(duì)象的指定屬性 , 進(jìn)行排序 。
換言之:可以按照程序員自己的意愿進(jìn)行排序;排序方法分為自由排序,定制排序
import org.junit.Test;import java.util.*;public class SetTest {@Testpublic void treeSetTest2() {/* 定制排序:(比較的標(biāo)準(zhǔn)為:compare()返回0) */Comparator com = new Comparator() {//按照年齡從大到小排序@Overridepublic int compare(Object o1, Object o2) {if (o1 instanceof User && o2 instanceof User){User user1 = (User)o1;User user2 = (User)o2;return Integer.compare(user1.getAge(), user2.getAge());}else {throw new RuntimeException("輸入的數(shù)據(jù)類型不匹配");}}/* @Override public boolean equals(Object obj) { return false; }*/};TreeSet treeSet = new TreeSet(com);treeSet.add(new User("jerry", 3));treeSet.add(new User("Mike", 13));treeSet.add(new User("Shar", 15));treeSet.add(new User("Tom", 12));treeSet.add(new User("Tww", 12));Iterator iterator1 = treeSet.iterator();while (iterator1.hasNext()) {System.out.println(iterator1.next());//User{name='jerry', age=3}//User{name='Tom', age=12}//User{name='Mike', age=13}//User{name='Shar', age=15}}}@Testpublic void test3(){/** * 【面試題:】 * 注意:重寫equals和hashCode方法 */HashSet set = new HashSet();User u1 = new User("AA",1001);User u2 = new User("BB",1002);set.add(u1);set.add(u2);System.out.println(set);//[User{name='AA', age=1001}, User{name='BB', age=1002}]u1.name = "CC";set.remove(u1);System.out.println(set); //[User{name='CC', age=1001}, User{name='BB', age=1002}]set.add(new User("CC",1001));System.out.println(set); //[User{name='CC', age=1001}, User{name='CC', age=1001}, User{name='BB', age=1002}]set.add(new User("AA",1001));System.out.println(set);//[User{name='CC', age=1001}, User{name='CC', age=1001}, User{name='AA', age=1001}, User{name='BB', age=1002}]}}//建立一個(gè)實(shí)現(xiàn)Comparable的User類,用于上面Set的操作class User implements Comparable {String name;int age;public User() {}public User(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "User{" +"name='" + name + ''' +", age=" + age +'}';}//按照姓名從小到大排列@Overridepublic int compareTo(Object o) {if(o instanceof User){User user = (User) o;return this.name.compareTo(user.name);}else {throw new RuntimeException("輸入的類型不匹配");}}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;User user = (User) o;if (age != user.age) return false;return name != null ? name.equals(user.name) : user.name == null;}@Overridepublic int hashCode() {int result = name != null ? name.hashCode() : 0;result = 31 * result + age;return result;}}
三、迭代器接口1、遍歷
Java (迭代器)不是一個(gè)集合 , 它是一種用于訪問集合的方法,可用于迭代和等集合 。
是 Java 迭代器最簡(jiǎn)單的實(shí)現(xiàn),是API 中的接口, 它擴(kuò)展了 接口 。
僅用于遍歷集合, 本身并不提供承裝對(duì)象的能力 。如果需要?jiǎng)?chuàng)建 對(duì)象 , 則必須有一個(gè)被迭代的集合 。集合對(duì)象每次調(diào)用()方法都得到一個(gè)全新的迭代器對(duì)象 , 默認(rèn)游標(biāo)都在集合的第一個(gè)元素之前 。
迭代器的兩個(gè)基本操作是 next 、 和。
調(diào)用 .next() 會(huì)返回迭代器的下一個(gè)元素 , 并且更新迭代器的狀態(tài) 。
調(diào)用 .() 用于檢測(cè)集合中是否還有元素 。
調(diào)用 .() 將迭代器返回的元素刪除 。
import org.junit.Test;import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;public class IteratorTest {//迭代器Iterator接口,用于遍歷Collection集合中的元素//1.內(nèi)部方法 hasNext() next()//2.集合對(duì)象每次調(diào)用iterator()方法都得到一個(gè)全新的迭代器對(duì)象//3.內(nèi)部定義了remove(),可以在遍歷的時(shí)候,刪除集合中的元素 ?!静煌诩险{(diào)用remove()】@Testpublic void tes1(){Collection coll= new ArrayList();coll.add(123);coll.add(456);coll.add(new String("Jerry"));Person p = new Person("Tom",15);coll.add(p);coll.add(false);Iterator iterator = coll.iterator();/* //方式一 : System.out.println(iterator.next()); //123 System.out.println(iterator.next()); //456 System.out.println(iterator.next()); //Jerry System.out.println(iterator.next()); //Collection接口.For_Iterator.Person{name='Tom', age=15} System.out.println(iterator.next()); //false System.out.println(iterator.next()); //超出集合的范圍,報(bào)錯(cuò)NoSuchElementException*//* //方式二 : 不推薦 for (int i=0;i< coll.size();i++){ System.out.println(iterator.next()); } *///方式三 :while(iterator.hasNext()){System.out.println(iterator.next());}}//測(cè)試Iterator中的remove()@Testpublic void test2(){Collection coll= new ArrayList();coll.add(123);coll.add(456);coll.add(new String("Jerry"));Person p = new Person("Tom",15);coll.add(p);coll.add(false);//刪除集合中的“Jerry"數(shù)組Iterator iterator = coll.iterator();while (iterator.hasNext()){Object obj = iterator.next();if ("Jerry".equals(obj)){iterator.remove();}}//遍歷集合iterator = coll.iterator();while(iterator.hasNext()){System.out.println(iterator.next());//此時(shí)輸出沒有了”Jerry“元素}}//創(chuàng)建一個(gè)Person類,來(lái)作為集合的一個(gè)元素class Person {private String name;private int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}}
遍歷的原理:
():判斷是否還有下一個(gè)元素
next():指針下移;將下移以后集合位置上的元素返回2、:增強(qiáng)for循環(huán)
Java 5.0 提供了循環(huán)迭代訪問 和數(shù)組 。
遍歷操作不需獲取或數(shù)組的長(zhǎng)度,無(wú)需使用索引訪問元素 。遍歷集合的底層調(diào)用完成操作 。還可以用來(lái)遍歷數(shù)組 。
package For_Iterator;import org.junit.Test;import java.util.ArrayList;import java.util.Collection;public class ForTest {//foreach循環(huán) , 用于遍歷集合、數(shù)組@Testpublic void test1(){Collection coll= new ArrayList();coll.add(123);coll.add(456);coll.add(new String("Jerry"));Person p = new Person("Tom",15);coll.add(p);coll.add(false);//for(集合元素的類型 局部變量 : 集合對(duì)象)for (Object obj : coll){System.out.println(obj);}}@Testpublic void test2(){int[] arr = new int[]{ 1,2,3,4,5,6};//for(數(shù)組元素的類型 局部變量 : 數(shù)組對(duì)象)for (int i : arr){System.out.println(i);}}//練習(xí)@Testpublic void test3(){String[] arr = new String[]{ "qq","wwe","wear"};/* //方式一 : 普通for循環(huán) for (int i = 0; i < arr.length; i++) { arr[i] = "GG"; } for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); // GG GG GG }*///方式二 : 增強(qiáng)for循環(huán)for(String i : arr){i = "GG";}for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] +" ");// qq wwe wear}}}
四、Map接口
Map接口:雙列數(shù)據(jù) , 保存具有映射關(guān)系“ key – value對(duì) ”的集合 。
Map與是并列的存在;一個(gè)單列數(shù)據(jù),一個(gè)雙列數(shù)據(jù) 。
方法
方法說(shuō)明
put( key, value)
增:將指定key-value添加到(或修改)當(dāng)前map對(duì)象中
( key)
刪:移除指定key的key-value對(duì),并返回value
void (Map m)
改:將m中的所有key-value對(duì)存放到當(dāng)前map中
void clear()
清空:清空當(dāng)前map中的所有數(shù)據(jù)
get( key)
查:獲取指定key對(duì)應(yīng)的value
( key)
查:是否包含指定的key
( value)
查:是否包含指定的Value
()
判斷當(dāng)前map是否為空
( obj)
判斷當(dāng)前map和參數(shù)對(duì)象obj是否相等
原始圖操作的方法
方法
方法說(shuō)明
Set ()
返回所有key構(gòu)成的Set集合
()
返回所有value構(gòu)成的集合
Set ()
返回所有key-value對(duì)構(gòu)成Set的集合
1、、?
public class MapTest {@Testpublic void test1(){Map map = new HashMap();//添加map.put("AA",123);map.put(45,123);map.put("BB",87);//修改map.put("AA",87);System.out.println(map);// {AA=87, BB=87, 45=123}Map map1 = new HashMap();map1.put("CC",123);map1.put("DD",234);map.putAll(map1);System.out.println(map);// {AA=87, BB=87, CC=123, DD=234, 45=123}//刪除Object value = https://www.jianzixun.com/map.remove(45);System.out.println(value);// 123System.out.println(map);// {AA=87, BB=87, CC=123, DD=234}//清空map.clear();System.out.println(map);// {}System.out.println(map.size()); // 0}@Testpublic void test2(){Map map = new HashMap();map.put("AA",123);map.put(45,123);map.put("BB",87);map.put("AA",87);Map map1 = new HashMap();map1.put("aa",123);map1.put("bb",345);System.out.println(map.get("AA"));// 87System.out.println(map.containsKey("CC")); //falseSystem.out.println(map.containsValue(123)); //trueSystem.out.println(map.isEmpty());//falseSystem.out.println(map.size());//3System.out.println(map.equals(map1));//false}@Testpublic void test3(){/** * 遍歷 * 1.Set keySet():返回所有key構(gòu)成的Set集合 * 2.Collection values():返回所有value構(gòu)成的Collection集合 * 3.Set entrySet():返回所有key-value對(duì)構(gòu)成Set的集合 */Map map = new HashMap();map.put("AA",123);map.put(45,123);map.put("BB",87);map.put("AA",87);//1.Set keySet():返回所有key構(gòu)成的Set集合Set set = map.keySet();Iterator iterator = set.iterator();while (iterator.hasNext()){System.out.print(iterator.next() + " ");//AA BB 45}//2.Collection values():返回所有value構(gòu)成的Collection集合Collection values = map.values();for(Object obj: values){System.out.print(obj + " ");// 87 87 123}//3.Set entrySet():返回所有key-value對(duì)構(gòu)成Set的集合Set set1 = map.entrySet();System.out.println(set1);//[AA=87, BB=87, 45=123]}}
3、五、工具類
類名
類名解釋
(List)
反轉(zhuǎn)List中元素的順序
(List)
對(duì)List集合元素進(jìn)行隨機(jī)排序
sort(List)
根據(jù)元素的自然模式對(duì)指定List 集合元素按升序排序
sort(list,)
根據(jù)指定比較器產(chǎn)生的順序?qū)χ付斜磉M(jìn)行排序 。
swap(List,int,int)
將指定List集合中的 i 處元素和 j 處元素進(jìn)行交換
max()
根據(jù)元素的自然順序,返回給定集合中的最大元素
max (,)
根據(jù)指定的順序,返回給定集合中的最大元素
min()
根據(jù)元素的自然順序 返回給定的最小元素 。
min (,)
根據(jù)指定比較器產(chǎn)生的順序 , 返回給定的最小元素 。
int (,)
返回指定集合中指定元素的出現(xiàn)次數(shù)
void copy(List dest,List src)
將src中的內(nèi)容復(fù)制到dest中
(List list, , )
使用新值替換List對(duì)應(yīng)舊值
import org.junit.Test;import java.util.*;/** * Collections工具類的使用演示 */public class CollectionsTest {@Testpublic void test1(){List list = new ArrayList();list.add(123);list.add(43);list.add(-927);list.add(0);System.out.println(list);//[123, 43, -927, 0]//reverse 反轉(zhuǎn)Collections.reverse(list);System.out.println(list);//[0, -927, 43, 123]//shuffle 隨機(jī)Collections.shuffle(list);System.out.println(list);// [43, 123, 0, -927]//sort 排序Collections.sort(list);System.out.println(list);//[-927, 0, 43, 123]//swap 交換Collections.swap(list,1,2);System.out.println(list);// [-927, 43, 0, 123]//Object max/min 最大值/最小值Object max = Collections.max(list);System.out.println(max);// 123Object min = Collections.min(list);System.out.println(min);// -927//frequency 頻率int frequency = Collections.frequency(list,123);int frequency1 = Collections.frequency(list,1);System.out.println(frequency);// 1System.out.println(frequency1);// 0}@Testpublic void test2(){//copy 復(fù)制List list = new ArrayList();list.add(123);list.add(43);list.add(-927);list.add(0);/* 錯(cuò)誤寫法:java.lang.IndexOutOfBoundsException: Source does not fit in dest List dest = new ArrayList(); Collections.copy(dest,list); System.out.println(dest); */List dest = Arrays.asList(new Object[list.size()]);System.out.println(dest.size());// 4Collections.copy(dest,list);System.out.println(dest);//[123, 43, -927, 0]//replace 替換Collections.replaceAll(list,123,321);System.out.println(list);// [321, 43, -927, 0]}}
帶你了解Java高級(jí)編程—–集合_符工愛奇的博客-CSDN博客
【一、Java集合的整體介紹】本文到此結(jié)束,希望對(duì)大家有所幫助 。
- ?一個(gè)人缺愛的表現(xiàn),一個(gè)人缺愛的六種表現(xiàn)
- 不主動(dòng)聯(lián)系的男人就一定是不愛了嗎? ?不聯(lián)系就是不愛了嗎
- 1 自然教育小活動(dòng)觀察動(dòng)物 ?觀察一種小動(dòng)物
- ?公務(wù)車輪胎 多久換一次
- ?荷蘭對(duì)華芯片態(tài)度為何“一反常態(tài)”?
- 頭條一條視頻播放量一萬(wàn)次有多少錢 ?播放量1億能賺多少錢
- ?一到暑假就播的經(jīng)典劇
- 蕭紅的一生經(jīng)歷簡(jiǎn)介 ?作家蕭紅的一生經(jīng)歷
- 在這些地方忽略了你 ?一個(gè)忙得忽略你的男人
- ?一個(gè)男人給我轉(zhuǎn)2000元
