(1-6-1)Java 集合

目錄

0.知識概述:

1.集合

1.1 集合繼承關系類圖

1.2?集合遍歷的三種方式

1.3 集合排序

?1.3.1 Collections實現

1.3.2 自定義排序類

2 List 集合概述

2.1 ArrayList?

(1)特點

(2)常用方法

2.2 LinkedList

3. Set集合

3.1 概述

(1)特點

(2)重要方法

(3)Set集合的唯一性(hashCode() -> equals())

3.2 HashSet

3.3 LinkedHashSet

3.4 TreeSet

4.Map

4.1?概述

4.1.1 特點 & 繼承關系

4.1.2 遍歷集合的三種方式

4.2 HashMap

4.3 LinkedHashMap

4.4 TreeMap


0.知識概述:



1.集合

1.1 集合繼承關系類圖

1.2?集合遍歷的三種方式

/*  遍歷集合的三種方式:01 -> for 循環遍歷02 -> forEach  方法遍歷03 -> Iterator  迭代器遍歷*/

代碼實現:

System.out.println(dmList);     //[斗羅, 滄源圖, 仙逆, 凡人, 斗破, 吞噬星空]/*  遍歷集合的三種方式:01 -> for 循環遍歷02 -> forEach  方法遍歷03 -> Iterator  迭代器遍歷*/// 法1:for(String dm: dmList){System.out.print(dm+" ");}                                 //斗羅 滄源圖 仙逆 凡人 斗破 吞噬星空System.out.println();// 法2:dmList.forEach(dm->{System.out.print(dm + " ");   //斗羅 滄源圖 仙逆 凡人 斗破 吞噬星空});System.out.println();// 法3:Iterator<String> itr = dmList.iterator();while(itr.hasNext()){String dm = itr.next();   // 提取下一個元素, 同時指針向后移動System.out.print(dm);}                             // 斗羅滄源圖仙逆凡人斗破吞噬星空System.out.println();

1.3 集合排序

?1.3.1 Collections實現
方式1: Collections.sort(list);
方式2: 創建一個內部類繼承Comparator, 實現其compare

code:

public class ListSorter {// 方式1: Collections.sort(list);public static List<Integer> sort1(List<Integer> list){Collections.sort(list);System.out.println(list);         //[18, 25, 45, 49]return list;}// 方式2: 創建一個內部類繼承Comparator, 實現其compareclass CompareDemo implements Comparator<Integer> {@Overridepublic int compare(Integer o1, Integer o2) {return o2 - o1;}}public  List<Integer> sort2(List<Integer> list){Collections.sort(list, new CompareDemo());System.out.println(list);              // [49, 45, 25, 18]return list;}public static void main(String[] args) {List<Integer> alist = new ArrayList<>();alist.add(25);alist.add(45);alist.add(49);alist.add(18);System.out.println(alist);            //[25, 45, 49, 18]System.out.println(alist.toString()); //[25, 45, 49, 18]System.out.println(ListSorter.sort1(alist));  //[18, 25, 45, 49]ListSorter ls = new ListSorter();System.out.println(ls.sort2(alist));  //[49, 45, 25, 18]}
}
1.3.2 自定義排序類
public class TestSort {class CarSortDemo implements Comparator<Car> {// 01 比較car 對象
//        @Override
//        public int compare(Car o1, Car o2) {
//            return o1.equals(o2) ? 0 : 1;
//        }// 02 比較car 對象的  sn屬性值
//        @Override
//        public int compare(Car o1, Car o2) {
//            return o1.getSn().compareTo(o2.getSn());
//        }// 03 比較car 對象的  brand 屬性值public int compare(Car o1, Car o2){return o2.getModel().compareTo(o1.getModel());}}public List<Car> sort(List<Car> list){Collections.sort(list, new CarSortDemo());return list;}public static void main(String[] args) {List<Car> carsList = new ArrayList<>();carsList.add(new Car("217893","baoma"));carsList.add(new Car("689326","su7"));carsList.add(new Car("859032","aodi"));carsList.add(new Car("785932","benchi"));carsList.add(new Car("238979","biyadi"));System.out.println(carsList);
//[Car{sn='217893', model='baoma'}, Car{sn='689326', model='su7'}, Car{sn='859032', model='aodi'}, Car{sn='785932', model='benchi'}, Car{sn='238979', model='biyadi'}]System.out.println(new TestSort().sort(carsList));// 01 比較car 對象
//[Car{sn='217893', model='baoma'}, Car{sn='689326', model='su7'}, Car{sn='859032', model='aodi'}, Car{sn='785932', model='benchi'}, Car{sn='238979', model='biyadi'}]// 02 比較car 對象的  sn屬性值
//[Car{sn='217893', model='baoma'}, Car{sn='238979', model='biyadi'}, Car{sn='689326', model='su7'}, Car{sn='785932', model='benchi'}, Car{sn='859032', model='aodi'}]// 03 比較car 對象的  brand 屬性值
//[Car{sn='689326', model='su7'}, Car{sn='238979', model='biyadi'}, Car{sn='785932', model='benchi'}, Car{sn='217893', model='baoma'}, Car{sn='859032', model='aodi'}]}
}


2 List 集合概述

有關List的相關繼承關系:


2.1 ArrayList?

(1)特點

(2)常用方法
/*** ArrayList   ->* 01. ArrayList<String> nickList = new ArrayList<String>();* 02. nickList.add("phdvb");*     nickList.add(1,"pxq");*     nickList.get(2)* 03. nickList.set(2, "drl");* 04. nickList.remove("phdvc");*     remove(listSize-1);*     nickList.size();*/
public class ArrayListDemo {public static void main(String[] args) {/*** ArrayList   ->* 01. ArrayList<String> nickList = new ArrayList<String>();* 02. nickList.add("phdvb");*     nickList.add(1,"pxq");*     nickList.get(2)* 03. nickList.set(2, "drl");* 04. nickList.remove("phdvc");*     remove(listSize-1);*     nickList.size();*///01 創建ArrayList對象ArrayList<String> nickList = new ArrayList<String>();//02 往ArrayList中添加數據nickList.add("phdvb");nickList.add("phdva");boolean isChange = nickList.add("phdvb");System.out.println("ArrayList是否發生變化?"+ isChange); //ArrayList是否發生變化?trueSystem.out.println(nickList);   //[phdvb, phdva, phdvb]System.out.println(nickList.get(2));  //phdvbnickList.add(1,"pxq");System.out.println(nickList);   //[phdvb, pxq, phdva, phdvb]nickList.add("phdvb");nickList.add("phdvc");nickList.add("phdvc");nickList.add("phdvd");//03 更新ArrayList中的元素String beforeNick = nickList.set(2, "drl");System.out.println(beforeNick); //phdvaSystem.out.println(nickList);   //[phdvb, pxq, drl, phdvb, phdvb, phdvb, phdvc, phdvd]//04 刪除ArrayList中的元素boolean isRemove = nickList.remove("phdvc");System.out.println(isRemove);   //trueSystem.out.println(nickList);   //僅刪除了一個元素,[phdvb, pxq, drl, phdvb, phdvb, phdvc, phdvd]int listSize = nickList.size();System.out.println(listSize);   //7nickList.remove(listSize-1);System.out.println(nickList);   //[phdvb, pxq, drl, phdvb, phdvb, phdvc]nickList.set(nickList.size()-2, "vb");System.out.println(nickList);   //[phdvb, pxq, drl, phdvb, vb, phdvc]}
}

2.2 LinkedList

代碼實現:

public class LinkedListDemo {public static void main(String[] args) {LinkedList<String> dmList = new LinkedList<String>();dmList.add("仙逆");dmList.add("凡人");dmList.add("斗破");System.out.println(dmList);     //[仙逆, 凡人, 斗破]dmList.add(0, "滄源圖");System.out.println(dmList);     //[滄源圖, 仙逆, 凡人, 斗破]// 實現的是 Deque接口 中的方法dmList.addFirst("斗羅");dmList.addLast("吞噬星空");System.out.println(dmList);     //[斗羅, 滄源圖, 仙逆, 凡人, 斗破, 吞噬星空]}
}

3. Set集合

3.1 概述

(1)特點

?Set集合接口間的實現關系:

(2)重要方法

代碼實現:

public class HashSetDemo {public static void main(String[] args) {// 實例化一個 Set集合Set<String> gameSet = new HashSet<String>();gameSet.add("夏洛特");gameSet.add("貂蟬");gameSet.add("戈雅");gameSet.add("不知火舞");System.out.println(gameSet);       //[不知火舞, 戈雅, 夏洛特, 貂蟬]// add()返回值代表是否真正在集合中插入元素boolean isChanged = gameSet.add("米萊迪");System.out.println(gameSet);       //[不知火舞, 戈雅, 夏洛特, 貂蟬, 米萊迪]System.out.println(isChanged);     //trueisChanged = gameSet.add("貂蟬");System.out.println(gameSet);       // [不知火舞, 戈雅, 夏洛特, 貂蟬, 米萊迪]System.out.println(isChanged);     // false// Set 可以 使用所有 Collection 接口定義方法int size = gameSet.size();System.out.println(size);          // 5boolean isContain = gameSet.contains("夏洛特");System.out.println(isContain);     // true}
}
(3)Set集合的唯一性(hashCode() -> equals())
/*** Q1 : Set集合如何確保數據的  唯一性*//*** A1 : Set集合在新增數據時, 先會判斷hashCode() 是否已存在*      若新增的hashCode() 在Set集合中存在, 在調用equals () 進行 值比較;*      新增的hashCode() 與 equals() 都存在的情況下*      Set集合認為數據已存在,不予新增*/

/*** Q2: 直接使用equals()判斷不行嗎?*//*** A2: 出于執行效率老驢*     hashCode() 返回的整數結果  決定了其將Set集合中的存放位置*     由于相比于Equals()方法hashCode()計算速度會很快,  但是有可能發生哈希碰撞*     所以equals再次會發生哈希碰撞的值進行比較*/

School類(重寫了hashCode()、equals()、toString())

public class School {private String name;private String addr;public School(String name, String addr) {setAddr(addr);setName(name);}public String getAddr() {return addr;}public void setAddr(String addr) {this.addr = addr;}public String getName() {return name;}public void setName(String name) {this.name = name;}// 重寫Object類的 toString()方法@Overridepublic String toString() {return this.hashCode() + "= School{" +"name='" + name + '\'' +"addr='" + addr + '\'' +"}";}@Overridepublic int hashCode() {
//        return super.hashCode();return this.name.hashCode();}@Overridepublic boolean equals(Object obj) {
//        return super.equals(obj);if(obj instanceof School){School school = (School)obj;if(this.name.equals(((School)obj).getName())){return true;}else{return false;}}else{return false;}}}

Test類

public class SetConsistent {public static void main(String[] args) {String sa = "西交大";String sb = "西工大";System.out.println("sa.hashCode():" + sa.hashCode() +",sa.hashCode():" + sb.hashCode());//  sa.hashCode():34473154,sa.hashCode():34594209HashSet<School> schoolHashSet = new HashSet<School>();schoolHashSet.add(new School(sa,"西安"));schoolHashSet.add(new School(sb,"西安"));schoolHashSet.add(new School("克職","克拉瑪依"));schoolHashSet.add(new School("克職","克拉瑪依"));System.out.println(schoolHashSet);//[1956725890= School{name='克職'addr='克拉瑪依'},// 1163157884= School{name='西工大'addr='西安'},// 460141958= School{name='西交大'addr='西安'}]}
}

3.2 HashSet

數據存放實例:


3.3 LinkedHashSet

數據存放示例:

代碼演示:

public class LinkedHashSetDemo {public static void main(String[] args) {Set<String> langSet= new LinkedHashSet<String>();langSet.add("Java");langSet.add("Python");langSet.add("C#");langSet.add("C++");System.out.println(langSet);    //[Java, Python, C#, C++]}
}

3.4 TreeSet

code01:

public class TreeSetDemo {public static void main(String[] args) {Set<Integer> tSet = new TreeSet<Integer>();tSet.add(108);tSet.add(139);tSet.add(75);tSet.add(64);tSet.add(225);System.out.println(tSet);   //[64, 75, 108, 139, 225]TreeSetDemo td = new TreeSetDemo();td.sort();                  //[226, 140, 109, 76, 65]}// 重寫Comparator接口中的compare方法,  實現自定義比較邏輯class IntegerComparator implements Comparator<Integer> {public int compare(Integer o1, Integer o2) {return o2 -o1;}}public void sort(){Set<Integer> tSet = new TreeSet<Integer>(new IntegerComparator());tSet.add(109);tSet.add(140);tSet.add(76);tSet.add(65);tSet.add(226);System.out.println(tSet);       //[226, 140, 109, 76, 65]}
}

4.Map

4.1?概述

4.1.1 特點 & 繼承關系

4.1.2 遍歷集合的三種方式
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;public class LoopMapThreeWays {// 遍歷集合//方式1: 增強for循環public void doForLoop(Map map){Set<String> keys = map.keySet();for(String key : keys){System.out.println(key + ":" + map.get(key));}}// 方式2: lambda 表達式public void doForLoop2(Map map){map.forEach((key, value) ->{System.out.println(key + ":" + value);});}// 方式3: 使用迭代器public void doForLoop3(Map map){Iterator<Map.Entry<String, Object>> itr = map.entrySet().iterator();while(itr.hasNext()){Map.Entry<String, Object> entry = itr.next();System.out.println(entry.getKey() + ":" + entry.getValue());}}public static void main(String[] args) {Map<String, Object> xlt = new LinkedHashMap<>();xlt.put("name", "夏洛特");xlt.put("nick", "玫瑰劍士");xlt.put("技能", "七星光芒劍");xlt.put("技能", "七星光芒斬");xlt.put("皮膚1", "浮生王");xlt.put("皮膚2", "金色皮");System.out.println(xlt);
//{name=夏洛特, nick=玫瑰劍士, 技能=七星光芒斬, 皮膚1=浮生王, 皮膚2=金色皮}LoopMapThreeWays lm = new LoopMapThreeWays();lm.doForLoop(xlt);System.out.println("——————————————————————————————————————————");lm.doForLoop2(xlt);System.out.println("——————————————————————————————————————————");lm.doForLoop3(xlt);/*name:夏洛特nick:玫瑰劍士技能:七星光芒斬皮膚1:浮生王皮膚2:金色皮*/}
}

4.2 HashMap

code:

import java.util.HashMap;
import java.util.Map;public class HashMapDemo {public static void main(String[] args) {Map<String, Object> xlt = new HashMap<String, Object>();xlt.put("name", "夏洛特");xlt.put("nick", "玫瑰劍士");xlt.put("技能", "七星光芒劍");xlt.put("技能", "七星光芒斬");System.out.println(xlt);        //{nick=玫瑰劍士, 技能=七星光芒斬, name=夏洛特}String heroNick = (String) xlt.get("nick");System.out.println(heroNick);   //玫瑰劍士System.out.println(xlt.containsKey("技能"));    //trueSystem.out.println(xlt.containsKey("皮膚"));    //falsexlt.put("皮膚1", "浮生王");int count = xlt.size();System.out.println(count);         //4xlt.put("皮膚2", "金色皮");System.out.println(xlt);           //{nick=玫瑰劍士, 技能=七星光芒斬, 皮膚2=金色皮, 皮膚1=浮生王, name=夏洛特}String removeValur = (String)xlt.remove("皮膚2");System.out.println(removeValur);   //金色皮}
}

4.3 LinkedHashMap

public class LinkedHashMapDemo {public static void main(String[] args) {Map<String, Object> xlt = new LinkedHashMap<>();xlt.put("name", "夏洛特");xlt.put("nick", "玫瑰劍士");xlt.put("技能", "七星光芒劍");xlt.put("技能", "七星光芒斬");xlt.put("皮膚1", "浮生王");xlt.put("皮膚2", "金色皮");System.out.println(xlt);
//{name=夏洛特, nick=玫瑰劍士, 技能=七星光芒斬, 皮膚1=浮生王, 皮膚2=金色皮}}
}

4.4 TreeMap


import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;public class TreeMapDemo {public static void main(String[] args) {/*正常需求測試1:*/Map<Object, Object> tMap = new TreeMap<Object, Object>();tMap.put("a2", 589);tMap.put("a1", "vb");tMap.put("b4", "運還是重要的");tMap.put("b5", "自信也重要");tMap.put("b2", 3.5);System.out.println(tMap);
//{a1=vb, a2=589, b2=3.5, b4=運還是重要的, b5=自信也重要}/*比較方法重寫測試2:*/TreeMapDemo td = new TreeMapDemo();td.sort();   //{b5=自信也重要, b4=運還是重要的, b2=3.5, a2=589, a1=vb}}class tMapComparator implements Comparator<String> {@Overridepublic int compare(String o1, String o2) {return o2.compareTo(o1);}}public void sort(){Map<String, Object> t2Map = new TreeMap<>(new tMapComparator());t2Map.put("a2", 589);t2Map.put("a1", "vb");t2Map.put("b4", "運還是重要的");t2Map.put("b5", "自信也重要");t2Map.put("b2", 3.5);System.out.println(t2Map);}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/84480.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/84480.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/84480.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue.extend

Vue.extend 是 Vue 2 中的一個重要 API&#xff0c;用于基于一個組件配置對象創建一個“可復用的組件構造函數”。它是 Vue 內部構建組件的底層機制之一&#xff0c;適用于某些高級用法&#xff0c;比如手動掛載組件、彈窗動態渲染等。 ?? 在 Vue 3 中已被移除&#xff0c;V…

【MySQL系列】SQL 分組統計與排序

博客目錄 引言一、基礎語法解析二、GROUP BY 的底層原理三、ORDER BY 的排序機制四、NULL 值的處理策略五、性能優化建議六、高級變體查詢 引言 在現代數據分析和數據庫管理中&#xff0c;分組統計是最基礎也是最核心的操作之一。無論是業務報表生成、用戶行為分析還是系統性能…

spring中的InstantiationAwareBeanPostProcessor接口詳解

一、接口定位與核心功能 InstantiationAwareBeanPostProcessor是Spring框架中擴展Bean生命周期的關鍵接口&#xff0c;繼承自BeanPostProcessor。它專注于Bean的實例化階段&#xff08;對象創建和屬性注入&#xff09;的干預&#xff0c;而非父接口的初始化階段&#xff08;如…

uniapp使用sse連接后端,接收后端推過來的消息(app不支持!!)

小白終成大白 文章目錄 小白終成大白前言一、什么是SSE呢&#xff1f;和websocket的異同點有什么&#xff1f;相同點不同點 二、直接上實現代碼總結 前言 一般的請求就是前端發 后端回復 你一下我一下 如果需要有什么實時性的 后端可以主動告訴前端的技術 我首先會想到 webso…

QML學習06Button

QMLx學習06Button 1、Button1.1 狀態改變&#xff08;checkable&#xff09;1.2 排斥性&#xff08;autoExclusive&#xff09;1.3 重復觸發&#xff08;autoRepeat&#xff09;、第一次觸發延時時間&#xff08;autoRepeatDelay&#xff09;、相互之間觸發的時間間隔&#xff…

什么是前端工程化?它有什么意義

前端工程化是指通過工具、流程和規范,將前端開發從手工化、碎片化的模式轉變為系統化、自動化和標準化的生產過程。其核心目標是 提升開發效率、保障代碼質量、增強項目可維護性,并適應現代復雜 Web 應用的需求。 一、前端工程化的核心內容 1. 模塊化開發 代碼模塊化:使用 …

校園二手交易系統

該交易平臺分為兩部分&#xff0c;前臺和后臺。用戶在前臺進行商品選購以及交易&#xff1b;管理員登錄后臺可以對商品進行維護&#xff0c;主要功能包含&#xff1a; 后臺系統的主要功能模塊如下&#xff1a; 登錄功能、注冊功能、后臺首頁 系統設置&#xff1a; 菜單管理、…

06-Web后端基礎(java操作數據庫)

1. 前言 在前面我們學習MySQL數據庫時&#xff0c;都是利用圖形化客戶端工具(如&#xff1a;idea、datagrip)&#xff0c;來操作數據庫的。 我們做為后端程序開發人員&#xff0c;通常會使用Java程序來完成對數據庫的操作。Java程序操作數據庫的技術呢&#xff0c;有很多啊&a…

uni-app學習筆記十三-vue3中slot插槽的使用

在頁面開發中&#xff0c;通常一個頁面分為頭部&#xff0c;尾部&#xff0c;和中心內容區。其中頭部&#xff0c;尾部一般比較固定&#xff0c;而中心區域往往是多樣的&#xff0c;需要自定義開發。此時&#xff0c;我們可以引入slot(插槽)來實現這一目標。<slot> 作為一…

Agent模型微調

這篇文章講解&#xff1a; 把 Agent 和 Fine-Tuning 的知識串起來&#xff0c;在更高的技術視角看大模型應用&#xff1b;加深對 Agent 工作原理的理解&#xff1b;加深對 Fine-Tuning 訓練數據處理的理解。 1. 認識大模型 Agent 1.1 大模型 Agent 的應用場景 揭秘Agent核心…

【最新版】Arduino IDE的安裝入門Demo

1、背景說明 1、本教程編寫日期為2025-5-24 2、Arduino IDE的版本為&#xff1a;Arduino IDE 2.3.6 3、使用的Arduino為Arduino Uno 1、ArduinoIDE的安裝 1、下載。網址如下&#xff1a;官網 2、然后一路安裝即可。 期間會默認安裝相關驅動&#xff0c;默認安裝即可。 3、安…

Python應用運算符初解

大家好!運算符是編程中不可或缺的工具&#xff0c;它們能幫助我們執行各種計算和操作。無論是數學運算&#xff0c;還是變量賦值&#xff0c;運算符都在背后默默發揮作用。對于編程初學者來說&#xff0c;理解并掌握常見運算符的用法是邁向編程世界的重要一步。 算術運算符: 加…

小米2025年校招筆試真題手撕(二)

一、題目 給一個長度為n的序列和一個整數x&#xff0c;每次操作可以選擇序列中的一個元素&#xff0c;將其從序列中刪去&#xff0c;或者將其值加一。 問至少操作多少次&#xff0c;可以使操作后的序列&#xff08;可以為空&#xff09;中數字之和是x的倍數。 輸入描述&#…

CNN卷積神經網絡到底卷了啥?

參考視頻&#xff1a;卷積神經網絡&#xff08;CNN&#xff09;到底卷了啥&#xff1f;8分鐘帶你快速了解&#xff01; 我們知道&#xff1a; 圖片是由像素點構成&#xff0c;即最終的成像效果是由背后像素的顏色數值所決定 在Excel中&#xff1a;有這樣一個由數值0和1組成的66…

教師技術知識對人工智能賦能下教學效果的影響:以教學創新為中介的實證研究

教師技術知識對人工智能賦能下教學效果的影響&#xff1a;以教學創新為中介的實證研究 摘要 隨著教育信息化的快速發展&#xff0c;人工智能技術在教育領域的應用日益廣泛&#xff0c;為教育教學帶來了深刻變革。然而&#xff0c;當前關于教師技術知識如何影響人工智能賦能下的…

Linux驅動學習筆記(九)

設備模型 1.kobject的全稱為kernel object&#xff0c;即內核對象&#xff0c;每一個kobject都會對應到系統/sys/下的一個目錄&#xff0c;這些目錄的子目錄也是一個kobject&#xff0c;以此類推&#xff0c;這些kobject構成樹狀關系&#xff0c;如下圖&#xff1a; kobject定…

25年上半年五月之軟考之設計模式

目錄 一、單例模式 二、工廠模式 三、 抽象工廠模式 四、適配器模式 五、策略模式 六、裝飾器模式 ?編輯 考點&#xff1a;會挖空super(coffeOpertion); 七、代理模式 為什么必須要使用代理對象&#xff1f; 和裝飾器模式的區別 八、備忘錄模式 一、單例模式 這個…

Python打卡第36天

浙大疏錦行 作業&#xff1a; 對之前的信貸項目&#xff0c;利用神經網絡訓練下&#xff0c;嘗試用到目前的知識點讓代碼更加規范和美觀。 import torch import torch.nn as nn import torch.optim as optim from sklearn.model_selection import train_test_split from sklear…

全面理解類和對象(下)

文章目錄 再談構造函數初始化列表 static概念&#xff1a; 友元友元函數友元類 內部類再次理解類和對象 再談構造函數 class Date { public:Date(int year, int month, int day){_year year;_month month;_day day;} private:int _year;int _month;int _day; };上述代碼有了…

TomatoSCI分析日記——層次聚類

TomatoSCI分析日記——層次聚類 今天介紹的是一種常見的聚類方法——層次聚類。層次聚類會將數據集劃分成嵌套的簇&#xff0c;形成一個層次結構&#xff08;樹狀圖&#xff09;&#xff0c;經常用于探究樣本的相似性。用大白話來說&#xff0c;就是&#xff1a;我有一大堆樣品…