日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

5 java中的集合类_java基础(5)-集合类1

發布時間:2025/4/16 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 5 java中的集合类_java基础(5)-集合类1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

集合的由來

數組是很常用的一種數據結構,但假如我們遇到以下這樣的的問題:

容器長度不確定

能自動排序

存儲以鍵值對方式的數據

如果遇到這樣的情況,數組就比較難滿足了,所以也就有了一種與數組類似的數據結構——集合類。即集合是java中提供的一種容器,可用來存儲多個數據

數組和集合的區別

1)長度

數組的長度固定

集合的長度可變

2)內容不同

數組存儲的是同一種類型元素

集合可存儲不同類型的元素

3)元素數據類型

數組可存儲基本數據類型,也可存儲引用數據類型

集合只能存儲引用類型

數組和集合的聯系

可使用toArray()和Arrays.asList()方法相互轉換

集合的集成體系

集合按存儲結構可以分為單列集合(Collection)和雙列集合(Map)

Collection

Collection:是單列集合的根接口,Collection表示一組對象。兩類子接口分別是LIst和Set【還有一類是Queue】

List接口:特點是元素有序,元素可重復。List接口的主要實現類有ArrayList和LinkedList

Set接口:特點是元素無序并且不可重復。Set接口的主要實現類有HashSet(散列存放)和TreeSet(有序存放)

Map

1)Map提供了一種映射關系,元素是以鍵值對(key-value)的形式存儲的,能夠根據key快速查找value,常用子類有Hashtable,HashMap和TreeMap

2)Map中的鍵值對以Entry類型的對象實例形式存在

3)鍵(key值)不可重復,value值可以

4)每個建最多只能映射到一個值

5)Map接口提供了分別返回key值集合、value值集合以及Entry(鍵值對)集合的方法

6)Map支持泛型,形式如:Map

Hashtable:底層是哈希表數據結構,不可存入null鍵null值,給集合是線程同步的。

HashMap:底層是哈希表數據結構,允許使用null鍵null值,該集合是不同步的

TreeMap:底層是二叉樹數據結構,線程不同步,可以用于給map集合中的鍵進行排序

Map接口與Collection接口的不同

map是雙列的,collection是單列的

map的鍵是唯一,collection的子體系set是唯一

map集合的數據結構只針對鍵有效,跟值無關,collection集合的數據結構是針對元素有效

集合框架思維導圖

集合中的方法

集合基本功能測試

向集合中添加元素

/*

*向集合中添加一個元素

*/

import java.util.Collection;

import java.util.ArrayList;

public class CollectionDemo1{

public static void main(String[] args){

//創建集合對象

//Collection c = new Collection();//錯誤,接口不能實例化,需要找實現類

Collection c = new ArrayList();

//向集合中添加元素:boolean add(Object o);

c.add("10w");

c.add("20w");

c.add("30w");

//輸出

System.out.println(c);

}

}

----------------------------------------------

輸出結果:[10w, 20w, 30w]

----------------------------------------------

刪除集合中所有元素

/*

*刪除集合中所有元素

*/

import java.util.Collection;

import java.util.ArrayList;

public class CollectionDemo2{

public static void main(String[] args){

//創建集合對象

Collection c = new ArrayList();

//向集合中添加元素

c.add("100w");

c.add("200w");

c.add("300w");

System.out.println("刪除前:"+c);

//刪除集合中所有元素:void clear()

c.clear();

System.out.println("刪除后:"+c);

}

}

------------------------------------------

輸出結果:

刪除前:[100w, 200w, 300w]

刪除后:[]

------------------------------------------

刪除該集合中指定的元素

/*

* 刪除該集合中指定元素

*/

import java.util.Collection;

import java.util.ArrayList;

public class CollectionDemo3{

public static void main(String[] args){

//創建集合

Collection c = new ArrayList();

//向集合中添加元素

c.add("10w");

c.add("30w");

c.add("50w");

System.out.println("刪除前:"+c);

//刪除該集合中中指定的元素:boolean remove(Object o)

c.remove("30w");

System.out.println("刪除后:"+c);

}

}

---------------------------------------------

輸出結果:

刪除前:[10w, 30w, 50w]

刪除后:[10w, 50w]

----------------------------------------------

判斷該集合中是否包含某個元素

/*

*判斷該集合中是否包含某個元素

*/

import java.util.Collection;

import java.util.ArrayList;

public class CollectionDemo4{

public static void main(String[] args){

//創建集合

Collection c = new ArrayList();

//添加元素

c.add("hadoop");

c.add("spark");

c.add("storm");

System.out.println(c);

//判斷該集合中是否包含某個元素:boolean contains(Object o)

System.out.println("判斷有沒有spark:"+c.contains("spark"));

System.out.println("判斷有沒有data:"+c.contains("data"));

}

}

---------------------------------------------

輸出結果

[hadoop, spark, storm]

判斷有沒有spark:true

判斷有沒有data:false

------------------------------------------------

判斷集合是否為空

/*

*判斷集合是否為空

*/

import java.util.Collection;

import java.util.ArrayList;

public class CollectionDemo5{

public static void main(String[] args){

//創建集合

Collection c1 = new ArrayList();

Collection c2 = new ArrayList();

//向集合2中添加元素

c2.add("java");

c2.add("scala");

c2.add("python");

//判斷集合是否為空:boolean isEmpty()

System.out.println("判斷集合c1是否為空:"+c1.isEmpty());

System.out.println("判斷集合c2是否為空:"+c2.isEmpty());

}

}

---------------------------------------------

輸出結果

判斷集合c1是否為空:true

判斷集合c2是否為空:false

-------------------------------------------

獲取該集合中元素的個數

/*

*判斷該元素的個數

*/

import java.util.Collection;

import java.util.ArrayList;

public class CollectionDemo6{

public static void main(String[] args){

//創建集合

Collection c = new ArrayList();

//添加元素

c.add("wujiadogn");

c.add("jiangrui");

c.add("sunqiangkun");

c.add("xuqingyu");

//獲取該集合的元素個數: int size()

System.out.println(c.size());

}

}

-------------------------------------

輸出結果

4

-------------------------------------

將指定集合的所有元素添加到該集合中

/*

*將指定集合的所有元素添加到該集合中

*/

import java.util.Collection;

import java.util.ArrayList;

public class CollectionDemo7{

public static void main(String[] args){

//創建集合

Collection c1 = new ArrayList();

Collection c2 = new ArrayList();

//添加元素

c1.add("hadoop");

c1.add("spark");

c1.add("storm");

c2.add("wujiadong");

System.out.println("c1:"+c1);

System.out.println("c2:"+c2);

//將指定集合中所有元素添加到該元素中:boolean addAll(Collection c)

c1.addAll(c2);//將c2添加到c1中

System.out.println("將集合c2元素添加到c1后的c1:"+c1);

System.out.println("將集合c2元素添加到c1后的c2:"+c2);

}

}

---------------------------------------

輸出結果

c1:[hadoop, spark, storm]

c2:[wujiadong]

將集合c2元素添加到c1后的c1:[hadoop, spark, storm, wujiadong]

將集合c2元素添加到c1后的c2:[wujiadong]

---------------------------------------

刪除指定集合中的所有元素

import java.util.Collection;

import java.util.ArrayList;

public class CollectionDemo8{

public static void main(String[] args){

//創建集合

Collection c1 = new ArrayList();

Collection c2 = new ArrayList();

//添加元素

c1.add("hadoop1");

c1.add("hadoop2");

c1.add("hadoop3");

c2.add("spark1");

c2.add("spark2");

c2.add("spark3");

c2.add("hadoop1");

System.out.println("c1:"+c1);

System.out.println("c2:"+c2);

System.out.println("c1刪除c2的元素");

c1.removeAll(c2);

System.out.println("c1:"+c1);

System.out.println("c2:"+c2);

}

}

----------------------------------------

輸出結果

c1:[hadoop1, hadoop2, hadoop3]

c2:[spark1, spark2, spark3, hadoop1]

c1刪除c2的元素

c1:[hadoop2, hadoop3]

c2:[spark1, spark2, spark3, hadoop1]

---------------------------------------------

判斷該集合中是否包含指定集合的所有元素

import java.util.Collection;

import java.util.ArrayList;

public class CollectionDemo8{

public static void main(String[] args){

//創建集合

Collection c1 = new ArrayList();

Collection c2 = new ArrayList();

Collection c3 = new ArrayList();

//添加元素

c1.add("hadoop1");

c1.add("hadoop2");

c1.add("hadoop3");

c2.add("spark1");

c2.add("spark2");

c2.add("spark3");

c2.add("hadoop1");

c3.add("hadoop1");

c3.add("hadoop2");

System.out.println("c1:"+c1);

System.out.println("c2:"+c2);

System.out.println("c3:"+c3);

System.out.println("c1是否包含c2:"+c1.containsAll(c2));

System.out.println("c1是否包含c3:"+c1.containsAll(c3));

System.out.println("retainAll()返回值表示c1是否發生過改變:"+c1.retainAll(c2));

System.out.println("c1:"+c1);

System.out.println("c2:"+c2);

}

}

注釋:

boolean retainAll(Collection c):兩個集合都有的元素

假假設有兩個集合A和B,A和B做交集,最終的結果保存在A中,B不變;返回值表示的是A是否發過生改變

--------------------------------

輸出結果

c1:[hadoop1, hadoop2, hadoop3]

c2:[spark1, spark2, spark3, hadoop1]

c3:[hadoop1, hadoop2]

c1是否包含c2:false

c1是否包含c3:true

c1和c2都有的元素retainAll():true

c1:[hadoop1]

c2:[spark1, spark2, spark3, hadoop1]

-------------------------------------

集合的遍歷

集合的使用步驟

1)創建集合對象

2)創建元素對象

3)把元素添加到集合

4)遍歷集合

a:通過集合對象獲取迭代器對象

b:通過迭代器對象的hasNext()方法判斷是否有元素

c:通過迭代器對象的next()方法獲取元素并移動到下一個位置

方法一:通過轉換成數組進行遍歷

/*

*通過將集合轉換成數組進行遍歷

*/

import java.util.Collection;

import java.util.ArrayList;

public class CollectionDemo1{

public static void main(String[] args){

//創建集合

Collection c = new ArrayList();

//向數組中添加元素

c.add("hadoop");

c.add("spark");

c.add("storm");

//Object[] toArray():將集合轉換成數組,可以實現集合的遍歷

Object[] objs = c.toArray();

for(int i=0;i

System.out.println(objs[i]);

}

}

}

----------------------------------------

輸出結果

hadoop

spark

storm

---------------------------------------

練習:用集合存儲5個學生對象,并把學生對象進行遍歷

import java.util.Collection;

import java.util.ArrayList;

public class CollectionDemo2{

public static void main(String[] args){

//創建集合

Collection c = new ArrayList();

//創建學生對象

Student s1 = new Student("wwww",20);

Student s2 = new Student("jjj",21);

Student s3 = new Student("ddd",22);

Student s4 = new Student("sss",23);

Student s5 = new Student("qqq",24);

//將對象存儲到集合中

c.add(s1);

c.add(s2);

c.add(s3);

c.add(s4);

c.add(s5);

//把集合轉成數組

Object[] objs = c.toArray();

for(int i=0;i

System.out.println(objs[i]);

}

}

}

class Student{

//成員變量

private String name;

private int age;

//構造方法

public Student(){

super();

}

public Student(String name,int age){

this.name = name;

this.age = age;

}

//getXxx()和setXxx()方法

public void setName(String name){

this.name = name;

}

public String getName(){

return name;

}

public void setAge(int age){

this.age = age;

}

public int getAge(){

return age;

}

public String toString(){

return "Student [name="+name+",age="+age+"]";

}

}

---------------------------------

輸出結果

Student [name=wwww,age=20]

Student [name=jjj,age=21]

Student [name=ddd,age=22]

Student [name=sss,age=23]

Student [name=qqq,age=24]

--------------------------------

方法二:集合專用遍歷方式:迭代器

import java.util.Collection;

import java.util.ArrayList;

import java.util.Iterator;

public class ObjectArrayDemo3{

public static void main(String[] args){

//創建集合

Collection c = new ArrayList();

c.add("hadoop");

c.add("spark");

c.add("storm");

// Iterator iterator();迭代器,集合的專用遍歷方式

Iterator it = c.iterator();//實際返回的子類對象,這里是多態

/*

System.out.println(it.next());

System.out.println(it.next());

System.out.println(it.next());

*/

while(it.hasNext()){

String s = (String) it.next();

System.out.println(s);

}

}

}

-------------------------------------

輸出結果

hadoop

spark

storm

---------------------------------------

練習:用集合存儲5個對象,并把學生對象進行遍歷,用迭代器遍歷

import java.util.Collection;

import java.util.ArrayList;

import java.util.Iterator;

public class ObjectArrayDemo4{

public static void main(String[] args){

//創建集合

Collection c = new ArrayList();

Student s1 = new Student("www",21);

Student s2 = new Student("jjj",22);

Student s3 = new Student("ddd",23);

Student s4 = new Student("sss",24);

Student s5 = new Student("qqq",25);

c.add(s1);

c.add(s2);

c.add(s3);

c.add(s4);

c.add(s5);

Iterator it = c.iterator();

while(it.hasNext()){

//System.out.println(it.next());

Student s = (Student) it.next();

System.out.println(s);

}

}

}

class Student{

//成員變量

private String name;

private int age;

//無參構造方法

public Student(){

super();

}

//有參構造方法

public Student(String name,int age){

this.name = name;

this.age = age;

}

//getXxx方法和setXxx方法

public void setName(String name){

this.name = name;

}

public String getName(){

return name;

}

public void setAge(int age){

this.age = age;

}

public int age(){

return age;

}

//為什么需要這個方法,沒有這個方法輸出結果過就是地址值

public String toString(){

return "Student [name="+name+",age="+age+"]";

}

}

-------------------------------------------

輸出結果

Student [name=www,age=21]

Student [name=jjj,age=22]

Student [name=ddd,age=23]

Student [name=sss,age=24]

Student [name=qqq,age=25]

--------------------------------------------

練習:存儲字符串并遍歷

import java.util.Collection;

import java.util.ArrayList;

import java.util.Iterator;

public class ObjectArrayDemo5{

public static void main(String[] args){

//創建集合對象

Collection c = new ArrayList();

//向集合添加元素

c.add("wu");

c.add("sun");

c.add("jiang");

c.add("xu");

c.add("haha");

//通過集合對象獲取迭代器對象

Iterator it = c.iterator();

//通過迭代器對象的hasNext()方法判斷有沒有元素

while(it.hasNext()){

//通過迭代器對象的next()方法獲取元素

String s = (String) it.next();

System.out.println(s);

}

}

}

-----------------------------------

輸出結果

wu

sun

jiang

xu

haha

------------------------------------

參考資料

總結

以上是生活随笔為你收集整理的5 java中的集合类_java基础(5)-集合类1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。