主頁 >  其他 > Java集合框架+工具類

Java集合框架+工具類

2021-07-21 13:07:02 其他

寫在前面
??你們好,我是小莊,很高興能和你們一起學習Java,如果您對Java感興趣的話可關注我的動態.
??寫博文是一種習慣,在這程序中能夠梳理和鞏固知識,

我們開始吧!

目錄

  • 一、陣列
    • 1、陣列的`特點`有哪些呢?
    • 2、陣列的定義和初始化:
    • 3、操作陣列
    • 4、多維陣列
    • 5、多維陣列的定義和初始化
    • 6、操作多維陣列
  • 二、List串列
    • 1、List的介紹:
    • 2、ArrayList
    • 3、LinkedList
  • 四、Set集合
    • 1、Set的介紹
    • 2、HashSet
    • 3、TreeSet
    • 4、在物件中使用Set
  • 五、Map映射
    • 1、Map的介紹
    • 2、HashMap
    • 3、Hashtable
    • 4、Properties
  • 六、工具類
    • 1、Arrays
    • 2、Collections

一、陣列

在Java基礎知識篇我們已經簡單的了解陣列
陣列是Java里面最基礎的資料結構,陣列是一個存放多個資料的容器

1、陣列的特點有哪些呢?

  • 資料是同一型別的,比如都是int型別;
  • 資料是線性排序的,可通過索引進行訪問資料,如: a[1];
  • 資料的長度(空間)一旦定義,則不能改變

陣列分為一維陣列多維陣列,實際上,多維陣列是陣列的陣列,存盤的方式是一行一行存盤,線性存盤,

2、陣列的定義和初始化:

int[] a;//只是宣告,并沒有初始化,也可以這樣宣告 int a[];
int[] b=new int[2];//宣告陣列并初始化一個可以存盤2個整數的陣列
b[0]=3;b[1]=5;//初始化陣列的值
int[] c=new int[]{1,2,3};//宣告的同時初始化,長度為3,值為1,2,3

陣列的索引是從0開始的,操作陣列時要注意陣列越界的問題,

int[] a=new int[3];//宣告并初始化了陣列長度為3的陣列
a[0]=1;//給陣列第一個元素(索引為0)賦值
a[2]=10;//給陣列第三個元素(索引為2)賦值
a[3]=6;//錯誤,陣列越界,陣列長度為3,但最后的元素為a[3-1]

3、操作陣列

方法作用
length()獲取陣列長度
a[i]單個獲取陣列a中的第i個索引元素,i0開始
for each迭代遍歷陣列
//給陣列賦值
//宣告并初始化10個長度的整型陣列
int[] a=new int[10];
//定義輸入
Scanner in=new Scanner(System.in);
//a.length表示獲取陣列的長度,注意:獲取字串長度使用的是length(),多了()
for(int i=0;i<a.length;i++){//進行遍歷陣列逐個賦值
    a[i]=in.nextInt();
}
//獲取陣列中第i位數,陣列索引從0開始
int b=a[2];//此時b的值可以獲取索引為2的整數

//for each遍歷陣列方式
for(int element:a){//a表示陣列的變數,element表示陣列的元素
    System.out.println(element);//對陣列的元素逐個輸出
}

4、多維陣列

這里我們用二維陣列進行講解,理解了二維陣列之后多維陣列自然理解了,

二維陣列和我們上面講的一維陣列的定義有些不一樣,二維陣列必須在定義的同時設定好存放的空間(長度)

int a[ ][ ]=new int [ i ][ j ]; i表示行數,j表示列數
注意:
int a[ ][ ]=new int[ ][ ]; 這樣定義是錯誤的;必須設定好長度
int a[ ][ ]=new int[ ][3];這樣定義也是錯誤的,行數必須定義
int[ ][ ] b=new int[2][2]{{0,1},{1,2}};這樣定義也是錯誤
int a[ ][ ]=new int[2][ ];這樣定義是正確的 ,列數可以不被定義
陣列越界問題

5、多維陣列的定義和初始化

//定義了一個兩行的陣列,具體多少列還不清楚
int[][] a = new int[2][];
//定義了一個兩行三列的陣列
int[][] c = new int[2][3];
//定義的同時初始化,下面是兩行三列的二維陣列
int[][] b = new int[][]{{1,2}, {2, 3}, {4, 5}};

6、操作多維陣列

//定義了一個兩行三列的陣列
int[][] a = new int[2][3];
//定義輸入
Scanner in=new Scanner(System.in);
//通過for嵌套回圈進行賦值二維陣列,先遍歷某一行,然后遍歷這一行中的列對應的值
for(int i=0;i<2;i++){//索引從0開始,這里i=0
	for(int j=0;j<3;j++){//索引從0開始,這里j=0
		//給二維陣列賦值
		a[i][j]=in.nextInt();
	}
}
//通過for each遍歷二維陣列
for(int[] i:a){
	for(int j:i){
	  System.out.println(j);
	}
}
//通過for回圈遍歷二維陣列
for(int i=0;i<2;i++){//索引從0開始,這里i=0
	for(int j=0;j<3;j++){//索引從0開始,這里j=0
		//列印結果
		System.out.println(a[i][j]);
	}
}

二、List串列

1、List的介紹:

List的特點

  • 允許重復資料
  • 資料型別一致
  • 有序的,底層實作Collection介面

List的實作

  • ArrayList(非同步,讀取速度快,陣列方式存盤)
  • LinkedList(非同步的,讀取速度一般,洗掉插入速度快,鏈表方式存盤)
  • Vector(同步的,讀取速度慢)

2、ArrayList

方法作用
add(E e)將指定的元素追加到此串列的末尾
add(int index, E element)在此串列中的指定位置插入指定的元素
get(int index)回傳此串列中指定位置的元素
isEmpty()如果此串列不包含元素,則回傳 true
remove(int index)洗掉該串列中指定位置的元素
remove(Object o)從串列中洗掉指定元素的第一個出現(如果存在)
clear()從串列中洗掉所有元素
contains(Object o)如果此串列包含指定的元素,則回傳 true
size()回傳此串列中的元素數
import java.util.ArrayList;
public class  ArrayListTest{
	public static void main(String[] args){
		//宣告ArrayList串列,型別為Integer物件,int的包裝類
		ArrayList<Integer> a=new ArrayList<>();
		//往串列添加元素
		a.add(2);
		a.add(0,3);
		//獲取串列中的第一個元素
		System.out.println(a.get(0));
		//獲取串列元素數
		System.out.println(a.size());
		//判斷串列是否為空,此時為false
		System.out.println(a.isEmpty());		
		//判斷串列是否包含指定的元素
		System.out.println(a.contains(3));
		//串列的遍歷
		for(int i=0;i<a.size();i++){
			System.out.println(a.get(i));
		}
		//洗掉下標為0的元素
		a.remove(0);
		//清空串列
		a.clear();	
	}
}

3、LinkedList

ArrayList的方法LinkedList同樣都有,但是,LinkedList有自己特殊的方法,
因為LinkedList是鏈表存盤的,所以提供了鏈表相關的方法:

方法作用
pop()頭部洗掉一個元素
push(E e)頭部添加一個元素
addFirst(E e)在該串列開頭插入指定的元素
addLast(E e)將指定的元素追加到此串列的末尾

其他方法和ArrayList一樣操作,我就不重復寫了

import java.util.LinkedList;

public class  LinkedListTest{
	public static void main(String[] args){
		//宣告LinkedList
		LinkedList<Integer> a=new LinkedList<>();
		a.push(2);
		a.push(3);
		//通過toString()方法查看存盤情況
		System.out.println(a.toString());
		a.pop();
		//通過toString()方法查看存盤情況
		System.out.println(a.toString());
		//往尾部添加,add()方法一樣
		a.addLast(4);
		a.add(5);
		//通過toString()方法查看存盤情況
		System.out.println(a.toString());
		//往頭部添加
		a.addFirst(1);
		//通過toString()方法查看存盤情況
		System.out.println(a.toString());
	}
}

運行結果:

[3, 2]
[2]
[2, 4, 5]
[1, 2, 4, 5]

Vector的用法和ArrayList幾乎是一樣的,都是陣列存盤,主要的區別是Vector是同步的,這里就不對Vector講解了

如果想讓ArrayList同步,可這樣實作:使用Collections.synchronizedList()方法進行封裝

ArrayList<Integer> a=(ArrayList<Integer>) Collections.synchronizedList(new ArrayList>());

小結:
??1、ArrayList不同步的,適合做大量的查詢,效率高
??2、LinkedList不同步的,適合做大量的插入洗掉操作,效率高
??3、Vector同步
??4、想要實作同步,可以用Collections.synchronizedList()方法進行封裝

四、Set集合

1、Set的介紹

集合的特點

  • 不允許重復資料
  • 資料型別一致
  • 不同步的,想要同步必須使用Collections.synchronizedList()方法進行封裝

Set的實作

  • HashSet 使用散列存盤,無序的
  • LinkedHashSet 使用散列存盤和樹形結構存盤的結合,有序的
  • TreeSet 使用樹形結構存盤,有序的

2、HashSet

不同步,可以容納null元素

方法作用
add(E e)將指定的元素追加到此串列的末尾
isEmpty()如果此串列不包含元素,則回傳 true
clear()從串列中洗掉所有元素
contains(Object o)如果此串列包含指定的元素,則回傳 true
size()回傳此串列中的元素數
remove(Object o)如果存在,則從該集合中洗掉指定的元素
retainAll(Collection<?> c)計算兩個集合的交集
import java.util.HashSet;
public class  HashSetTest{
	public static void main(String[] args){
		//宣告HashSet
		HashSet<Integer> h=new HashSet<>();
		//往串列添加元素
		h.add(null);
		h.add(2);
		h.add(3);
		h.add(40000);
		h.add(3);//重復,不添加
		h.add(6);	
		//遍歷結果
		for(Integer item:h) {
			System.out.println(item);
		}
		System.out.println("----遍歷結束-----");
		//獲取串列元素數
		System.out.println(h.size());
		//判斷串列是否為空,此時為false
		System.out.println(h.isEmpty());		
		//判斷串列是否包含指定的元素
		System.out.println(h.contains(3));
		
		//這里定義另一個集合,并添加元素
		HashSet<Integer> h2=new HashSet<>();
		h2.add(1);
		h2.add(3);
		//計算兩個集合的交集
		h.retainAll(h2);
		System.out.println("它們的交集是:"+h);
		//洗掉指定元素
		h.remove(3);
		//清空串列
		h.clear();
	}
}

運行結果:

null
40000
2
3
6
----遍歷結束-----
5
false
true
它們的交集是:[3]

LinkedHashSet 繼承HashSet,但是有序的,add()方法添加后遍歷是有序的,因為LinkedHashSet上面所有的方法都是HashSet繼承的,并且沒有重寫,所以這里不對LinkedHash進行介紹,

3、TreeSet

基于TreeMap實作,不可以容納null元素,
根據compareTo()方法指定Comparator排序

方法作用
add(E e)將指定的元素追加到此串列的末尾
isEmpty()如果此串列不包含元素,則回傳 true
clear()從串列中洗掉所有元素
contains(Object o)如果此串列包含指定的元素,則回傳 true
size()回傳此串列中的元素數
remove(Object o)如果存在,則從該集合中洗掉指定的元素
first()回傳此集合中當前的第一個(最低)元素
import java.util.TreeSet;
public class  TreeTest{
	public static void main(String[] args){
		//宣告TreeSet
		TreeSet<Integer> t=new TreeSet<>();
		//往串列添加元素
		//t.add(null);錯誤
		t.add(2);
		t.add(3);
		t.add(40000);
		t.add(3);//重復,不添加
		t.add(6);	
		//遍歷結果
		for(Integer item:t) {
			System.out.println(item);
		}
		System.out.println("----遍歷結束-----");
		//獲取串列元素數
		System.out.println(t.size());
		//判斷串列是否為空,此時為false
		System.out.println(t.isEmpty());		
		//判斷串列是否包含指定的元素
		System.out.println(t.contains(3));
		//洗掉指定元素
		t.remove(3);
		//清空串列
		t.clear();
	}
}

運行結果:

2
3
6
40000
----遍歷結束-----
4
false
true

從中我們發現:TreeSet遍歷是從小到大的,有序的

4、在物件中使用Set

我們知道,Set集合是不重復的,那么,如果我們在一個物件中使用它時該怎么使用呢?

第一、使用HashSet和LinkedSet時,必須在類中重寫Object類的equals()hashCode()toString()方法,否則無法判斷是否重復
第二、使用TreeSet時,必須實作Comparable介面,即實作compareTo()方法

例一:新建一個Cat.java類,使用HashSet(LinkedSet)存盤Cat物件

public class Cat{
	private int size;
	//有參構造
	public Cat(int s) {	
		this.size=s;
	}
	//獲取size
	public int getSize() {
		return size;
	}
	//重寫Ojbect類的equals方法
	public boolean equals(Object o) {
		System.out.println("equals正在被呼叫");
		if(0==size-((Cat) o).getSize()) {
			return true;
		}else {
			return false;
		}
	}
	//重寫Object類的hashCode方法
	public int hashCode() {
		System.out.println("hashCode正在被呼叫");
		return size;
	}
	public String toString() {
		System.out.println("toString正在呼叫");
		return size+"";
	}
}

例二:新建Dog.java類,使用TreeSet存盤物件

public class Dog implements Comparable{
	private int size;
	//有參構造
	public Dog(int s) {	
		this.size=s;
	}
	//獲取size
	public int getSize() {
		return size;
	}
	@Override
	public int compareTo(Object o) {
		//若物件的值和傳進來的值相等,則回傳0
		return size-((Dog)o).getSize();
	}
}

最后我們進行測驗

import java.util.HashSet;
import java.util.TreeSet;
public class Test{
	public static void main(String[] args){
		//宣告HashSet
		HashSet<Cat> hc=new HashSet<>();
		//宣告TreeSet
		TreeSet<Dog> td=new TreeSet<>();
		//往串列添加元素
		hc.add(new Cat(1));
		hc.add(new Cat(2));
		hc.add(new Cat(2));
		System.out.println(hc.size());
		System.out.println("----HashSet使用結束----");
		
		td.add(new Dog(1));
		td.add(new Dog(2));
		td.add(new Dog(2));
		System.out.println(td.size());
		System.out.println("----TreeSet使用結束----");
	}
}

五、Map映射

1、Map的介紹

數學中使用的映射關系是定義域和值域,Map就是以鍵值對方式存盤
一個鍵對應一個值(key:value)
Map的特點

  • 以鍵值對的方式進行存盤

Map的實作

  • HashMap 不同步,速度快,資料量大
  • Hashtable 同步,速度慢,資料量小
  • Properties 同步,檔案格式,資料量小

2、HashMap

最多允許一條記錄的鍵為null,并允許null的值,不支持執行緒同步,訪問速度快,

方法作用
put(K key, V value)將指定的值與此映射中的指定鍵相關聯
get(Object key)回傳到指定鍵所映射的值,或 null如果此映射包含該鍵的映射
replace(K key, V value)只有當目標映射到某個值時,才能替換指定鍵的條目
clear()從中洗掉所有的映射,
isEmpty()如果不包含鍵值映射,則回傳 true
size()回傳鍵值映射的數量
keySet()回傳包含的鍵的Set視圖
entrySet()回傳包含鍵值對的Set視圖
values()回傳包含的值的Collection視圖
remove(Object key)洗掉指定鍵的映射(如果存在)
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class  MathTest{
	public static void main(String[] args){
		//宣告HashMap并設定鍵值對型別均為String字串型
		HashMap<String,String> map=new HashMap<>();
		//添加鍵值對
		map.put("name", "張三");
		map.put("height","170cm" );
		//當鍵相同,后面的值會覆寫前面的
		map.put("height", "180cm");
		//根據鍵獲取值
		String result=map.get("height");
		//列印結果
		System.out.println(result);
		//根據鍵替換值
		map.replace("name", "李四");
		//查看結果
		System.out.println(map.get("name"));
		//獲取鍵值對個數,map.size()
		System.out.println("元素個數為:"+map.size());
		//判斷鍵值對是否為空,map.isEmpty()
		System.out.println(map.isEmpty());
		//獲取所有值
		System.out.println(map.values());
		
		//定義一個key和value,后面用
		String key;
		String value;
		System.out.println("-----使用EntrySet迭代器遍歷-----");
		Iterator<Entry<String,String>> et=map.entrySet().iterator();
		while(et.hasNext()) {
			//System.out.println(et.next());輸出格式:key=value
			Map.Entry<String, String> ite=et.next();
			key=ite.getKey();
			value=ite.getValue();
			//列印結果
			System.out.println("鍵:"+key+" 值:"+value);
		}
		System.out.println("-----使用EntrySet迭代器遍歷結束-----");
		System.out.println();
		
		System.out.println("-----使用keySet迭代器遍歷-----");
		
		Iterator<String> it=map.keySet().iterator();
		while(it.hasNext()) {
			key=it.next();
			value=map.get(key);
			//列印結果
			System.out.println("鍵:"+key+" 值:"+value);
			
		}
		System.out.println("-----使用keySet迭代器遍歷結束-----");
		//根據鍵進行洗掉元素
		map.remove("height");
		//獲取鍵值對個數
		System.out.println("元素個數為:"+map.size());
		//清空
		map.clear();
		//獲取鍵值對個數
		System.out.println("元素個數為:"+map.size());
	}
}

列印結果:

180cm
李四
元素個數為:2
false
[李四, 180cm]
-----使用EntrySet迭代器遍歷-----
name=李四
height=180cm
-----使用EntrySet迭代器遍歷結束-----

-----使用keySet迭代器遍歷-----
鍵:name 值:李四
鍵:height 值:180cm
-----使用keySet迭代器遍歷結束-----
元素個數為:1
元素個數為:0

簡單介紹
LinkedHashMap :維持插入順序的HashMap(遍歷順序和插入順序保持一致)
TreeHashMap: 自然數的方式排序,比如數字是從小到大排序

這兩個Map和HashMap的關系類似于HashSet和LinkedHashSet、HashSet和TreeSet的關系

3、Hashtable

  • 無序的
  • 適合資料量小的資料
  • 同步
  • key和value都不支持null元素
方法作用
put(K key, V value)將指定的值與此映射中的指定鍵相關聯
get(Object key)回傳到指定鍵所映射的值,或 null如果此映射包含該鍵的映射
replace(K key, V value)只有當目標映射到某個值時,才能替換指定鍵的條目
clear()從中洗掉所有的映射,
isEmpty()如果不包含鍵值映射,則回傳 true
size()回傳鍵值映射的數量
keySet()回傳包含的鍵的Set視圖
entrySet()回傳包含鍵值對的Set視圖
values()回傳包含的值的Collection視圖
remove(Object key)洗掉指定鍵的映射(如果存在)

這里的用法和HashMap一樣,代碼大部分重復,只需要改定義

Hashtable<String,String> map=new Hashtable<>();

改完之后運行結果:

180cm
李四
元素個數為:2
false
[180cm, 李四]
-----使用EntrySet迭代器遍歷-----
鍵:height 值:180cm
鍵:name 值:李四
-----使用EntrySet迭代器遍歷結束-----

-----使用keySet迭代器遍歷-----
鍵:height 值:180cm
鍵:name 值:李四
-----使用keySet迭代器遍歷結束-----
元素個數為:1
元素個數為:0

從中可以說明Hashtable是無序的

4、Properties

  • 繼承Hashtable類
  • 可以將k-v對保存到檔案中
  • 適合資料少的組態檔,比如資料庫的配置
  • 除了繼承Hashtable的方法外,有自己的方法
load(InputStream inStream)從輸入位元組流讀取屬性串列(鍵和元素對)
store(OutputStream out, String comments)將此屬性串列(鍵和元素對)寫入此 Properties表中
getProperty(String key)使用此屬性串列中指定的鍵搜索值
setProperty(String key, String value)設定鍵和值
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.Properties;

public class  PropertiesTest{
	public static void main(String[] args) throws IOException{
		//寫入Properties操作
		WriteProperties("Test.properties","name","張三");
		WriteProperties("Test.properties","height","180cm");
		System.out.println("---GetAllProperties---");
		//讀取Properties全部資訊
		GetAllProperties("Test.properties");
		根據key讀取value
		String key="name";
		System.out.println();
		System.out.println("---GetValueByKey---");
		String value=GetValueByKey("Test.properties",key);
		System.out.println("根據"+key+"獲取的值為:"+value);
	}
	//寫入Properties資訊
	public static void WriteProperties(String filePath,String pKey,String pValue) throws IOException {
		File file=new File(filePath);
		//檔案不存在
		if(!file.exists()) {
			//新建檔案
			file.createNewFile();
		}
		Properties p=new Properties();
		OutputStream out=new FileOutputStream(filePath);
		//設定鍵值對
		p.setProperty(pKey, pValue);
		//將此屬性串列(鍵和元素對)寫入此 Properties表中
		p.store(out, pValue);
		//關閉流
		out.close();
	}
	//讀取Properties全部資訊
	public static void GetAllProperties(String filePath) throws IOException {		
		Properties p=new Properties();
		InputStream in=new BufferedInputStream(new FileInputStream(filePath));
		//加載所有的鍵值對
		p.load(in);
		//獲取組態檔的名字
		Enumeration e=p.propertyNames();
		//迭代遍歷
		while(e.hasMoreElements()) {
		//獲取鍵
		String key=	(String)e.nextElement();
		//根據鍵獲取值
		String value=p.getProperty(key);
		System.out.println("key:"+key+" value:"+value);
		}
	}
	//根據key讀取value
	public static String GetValueByKey(String filePath,String key){
	InputStream in=null;
		try {
			Properties p=new Properties();
			in=new BufferedInputStream(new FileInputStream(filePath));
			//加載所有的鍵值對
			p.load(in);
			//根據傳進來的key獲取值
			String value=p.getProperty(key);
			//回傳值
			return value;
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}finally{
			try {
				in.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}	
	}
}

溫馨提示:這里涉及到檔案讀寫操作,如不了解,請看下一篇文章
運行結果:

---GetAllProperties---
key:height value:180cm
key:name value:張三

---GetValueByKey---
根據name獲取的值為:張三

六、工具類

  • Arrays
  • Collections

不存盤資料,但是提供一些方法,提高我們的作業效率

1、Arrays

方法作用
sort()對陣列進行排序
binarySearch()使用二分查找
capyOf()批量拷貝
fill()批量賦值
equals()判定兩個陣列內容是否相同
import java.util.Arrays;
import java.util.Random;

public class  ArraysTest{
	public static void main(String[] args){
		//new一個隨機函式
		Random r=new Random();
		//創建一個長度為5的陣列
		int[] a=new int[5];
		for(int i=0;i<a.length;i++) {
			//給陣列設定亂數
			a[i]=r.nextInt();
		}
		//使用工具類Arrays排序
		Arrays.sort(a);
		//重新給一個數指定一個值,然后查找
		a[3]=666;
		//使用二分查找進行查值
		int result=Arrays.binarySearch(a, 666);
		System.out.println("666的位置是:"+result);
		
		//把陣列a的值拷貝給陣列b,只拷貝前三個
		int[] b=Arrays.copyOf(a, 3);
		
		//給陣列a批量賦值,全部賦值為66
		Arrays.fill(a, 66);
		//從第1個元素到第3個元素進行批量賦值為1 
		Arrays.fill(a,0,3,1);//[0,3)
		for(int item:a) {
			System.out.println(item);
		}
		System.out.println(a.equals(b));
	}
}

運行結果:

666的位置是:3
1
1
1
66
66
false

2、Collections

Collection處理的物件是Collection和它的子類

方法作用
sort()對List進行排序
binarySearch()使用二分查找List中的元素
fill()批量賦值
max()判斷List中的最大值
min()判斷List中的最小值
import java.util.ArrayList;
import java.util.Collections;

public class  CollectionsTest{
	public static void main(String[] args){
		//定義一個陣列串列
		ArrayList<Integer> list=new ArrayList<>();
		//存盤資料
		list.add(1);
		list.add(12);
		list.add(3);
		list.add(20);
		//排序
		Collections.sort(list);
		for(int item:list) {
			System.out.println(item);
		}
		//二分查找
		int result=Collections.binarySearch(list, 3);
		//列印結果
		System.out.println("3在串列中的位置為:"+result);
		//獲取最大值
		int max=Collections.max(list);
		System.out.println("最大值為:"+max);
		//獲取最小值
		int min=Collections.min(list);
		System.out.println("最小值為:"+min);
		//批量操作,全部賦值666
		Collections.fill(list, 666);
		System.out.println("--批量操作后結果--");
		for(int item:list) {
			System.out.println(item);
		}
	}
}

運行結果:

1
3
12
20
1
最大值為:20
最小值為:1
--批量操作后結果--
666
666
666
666

本篇內容結束,謝謝閱讀

上一篇:Java常用類別庫

下一篇:正在更新中…

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/289240.html

標籤:其他

上一篇:【死磕 Java Core】— 我同事一個 select 分頁陳述句查出來了 3000W 條資料

下一篇:Win11系統雖香但不是想升就能升?這三款精品win11升級檢測工具告訴您的愛機是否達標!!!

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more