1 Collection集合
1.1 常用集合的体系
#mermaid-svg-dmg6k5CugOsij3Ax .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-dmg6k5CugOsij3Ax .label text{fill:#333}#mermaid-svg-dmg6k5CugOsij3Ax .node rect,#mermaid-svg-dmg6k5CugOsij3Ax .node circle,#mermaid-svg-dmg6k5CugOsij3Ax .node ellipse,#mermaid-svg-dmg6k5CugOsij3Ax .node polygon,#mermaid-svg-dmg6k5CugOsij3Ax .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-dmg6k5CugOsij3Ax .node .label{text-align:center;fill:#333}#mermaid-svg-dmg6k5CugOsij3Ax .node.clickable{cursor:pointer}#mermaid-svg-dmg6k5CugOsij3Ax .arrowheadPath{fill:#333}#mermaid-svg-dmg6k5CugOsij3Ax .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-dmg6k5CugOsij3Ax .flowchart-link{stroke:#333;fill:none}#mermaid-svg-dmg6k5CugOsij3Ax .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-dmg6k5CugOsij3Ax .edgeLabel rect{opacity:0.9}#mermaid-svg-dmg6k5CugOsij3Ax .edgeLabel span{color:#333}#mermaid-svg-dmg6k5CugOsij3Ax .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-dmg6k5CugOsij3Ax .cluster text{fill:#333}#mermaid-svg-dmg6k5CugOsij3Ax div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-dmg6k5CugOsij3Ax .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-dmg6k5CugOsij3Ax text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-dmg6k5CugOsij3Ax .actor-line{stroke:grey}#mermaid-svg-dmg6k5CugOsij3Ax .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-dmg6k5CugOsij3Ax .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-dmg6k5CugOsij3Ax #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-dmg6k5CugOsij3Ax .sequenceNumber{fill:#fff}#mermaid-svg-dmg6k5CugOsij3Ax #sequencenumber{fill:#333}#mermaid-svg-dmg6k5CugOsij3Ax #crosshead path{fill:#333;stroke:#333}#mermaid-svg-dmg6k5CugOsij3Ax .messageText{fill:#333;stroke:#333}#mermaid-svg-dmg6k5CugOsij3Ax .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-dmg6k5CugOsij3Ax .labelText,#mermaid-svg-dmg6k5CugOsij3Ax .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-dmg6k5CugOsij3Ax .loopText,#mermaid-svg-dmg6k5CugOsij3Ax .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-dmg6k5CugOsij3Ax .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-dmg6k5CugOsij3Ax .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-dmg6k5CugOsij3Ax .noteText,#mermaid-svg-dmg6k5CugOsij3Ax .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-dmg6k5CugOsij3Ax .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-dmg6k5CugOsij3Ax .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-dmg6k5CugOsij3Ax .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-dmg6k5CugOsij3Ax .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-dmg6k5CugOsij3Ax .section{stroke:none;opacity:0.2}#mermaid-svg-dmg6k5CugOsij3Ax .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-dmg6k5CugOsij3Ax .section2{fill:#fff400}#mermaid-svg-dmg6k5CugOsij3Ax .section1,#mermaid-svg-dmg6k5CugOsij3Ax .section3{fill:#fff;opacity:0.2}#mermaid-svg-dmg6k5CugOsij3Ax .sectionTitle0{fill:#333}#mermaid-svg-dmg6k5CugOsij3Ax .sectionTitle1{fill:#333}#mermaid-svg-dmg6k5CugOsij3Ax .sectionTitle2{fill:#333}#mermaid-svg-dmg6k5CugOsij3Ax .sectionTitle3{fill:#333}#mermaid-svg-dmg6k5CugOsij3Ax .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-dmg6k5CugOsij3Ax .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-dmg6k5CugOsij3Ax .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-dmg6k5CugOsij3Ax .grid path{stroke-width:0}#mermaid-svg-dmg6k5CugOsij3Ax .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-dmg6k5CugOsij3Ax .task{stroke-width:2}#mermaid-svg-dmg6k5CugOsij3Ax .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-dmg6k5CugOsij3Ax .taskText:not([font-size]){font-size:11px}#mermaid-svg-dmg6k5CugOsij3Ax .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-dmg6k5CugOsij3Ax .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-dmg6k5CugOsij3Ax .task.clickable{cursor:pointer}#mermaid-svg-dmg6k5CugOsij3Ax .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-dmg6k5CugOsij3Ax .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-dmg6k5CugOsij3Ax .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-dmg6k5CugOsij3Ax .taskText0,#mermaid-svg-dmg6k5CugOsij3Ax .taskText1,#mermaid-svg-dmg6k5CugOsij3Ax .taskText2,#mermaid-svg-dmg6k5CugOsij3Ax .taskText3{fill:#fff}#mermaid-svg-dmg6k5CugOsij3Ax .task0,#mermaid-svg-dmg6k5CugOsij3Ax .task1,#mermaid-svg-dmg6k5CugOsij3Ax .task2,#mermaid-svg-dmg6k5CugOsij3Ax .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-dmg6k5CugOsij3Ax .taskTextOutside0,#mermaid-svg-dmg6k5CugOsij3Ax .taskTextOutside2{fill:#000}#mermaid-svg-dmg6k5CugOsij3Ax .taskTextOutside1,#mermaid-svg-dmg6k5CugOsij3Ax .taskTextOutside3{fill:#000}#mermaid-svg-dmg6k5CugOsij3Ax .active0,#mermaid-svg-dmg6k5CugOsij3Ax .active1,#mermaid-svg-dmg6k5CugOsij3Ax .active2,#mermaid-svg-dmg6k5CugOsij3Ax .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-dmg6k5CugOsij3Ax .activeText0,#mermaid-svg-dmg6k5CugOsij3Ax .activeText1,#mermaid-svg-dmg6k5CugOsij3Ax .activeText2,#mermaid-svg-dmg6k5CugOsij3Ax .activeText3{fill:#000 !important}#mermaid-svg-dmg6k5CugOsij3Ax .done0,#mermaid-svg-dmg6k5CugOsij3Ax .done1,#mermaid-svg-dmg6k5CugOsij3Ax .done2,#mermaid-svg-dmg6k5CugOsij3Ax .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-dmg6k5CugOsij3Ax .doneText0,#mermaid-svg-dmg6k5CugOsij3Ax .doneText1,#mermaid-svg-dmg6k5CugOsij3Ax .doneText2,#mermaid-svg-dmg6k5CugOsij3Ax .doneText3{fill:#000 !important}#mermaid-svg-dmg6k5CugOsij3Ax .crit0,#mermaid-svg-dmg6k5CugOsij3Ax .crit1,#mermaid-svg-dmg6k5CugOsij3Ax .crit2,#mermaid-svg-dmg6k5CugOsij3Ax .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-dmg6k5CugOsij3Ax .activeCrit0,#mermaid-svg-dmg6k5CugOsij3Ax .activeCrit1,#mermaid-svg-dmg6k5CugOsij3Ax .activeCrit2,#mermaid-svg-dmg6k5CugOsij3Ax .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-dmg6k5CugOsij3Ax .doneCrit0,#mermaid-svg-dmg6k5CugOsij3Ax .doneCrit1,#mermaid-svg-dmg6k5CugOsij3Ax .doneCrit2,#mermaid-svg-dmg6k5CugOsij3Ax .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-dmg6k5CugOsij3Ax .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-dmg6k5CugOsij3Ax .milestoneText{font-style:italic}#mermaid-svg-dmg6k5CugOsij3Ax .doneCritText0,#mermaid-svg-dmg6k5CugOsij3Ax .doneCritText1,#mermaid-svg-dmg6k5CugOsij3Ax .doneCritText2,#mermaid-svg-dmg6k5CugOsij3Ax .doneCritText3{fill:#000 !important}#mermaid-svg-dmg6k5CugOsij3Ax .activeCritText0,#mermaid-svg-dmg6k5CugOsij3Ax .activeCritText1,#mermaid-svg-dmg6k5CugOsij3Ax .activeCritText2,#mermaid-svg-dmg6k5CugOsij3Ax .activeCritText3{fill:#000 !important}#mermaid-svg-dmg6k5CugOsij3Ax .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-dmg6k5CugOsij3Ax g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-dmg6k5CugOsij3Ax g.classGroup text .title{font-weight:bolder}#mermaid-svg-dmg6k5CugOsij3Ax g.clickable{cursor:pointer}#mermaid-svg-dmg6k5CugOsij3Ax g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-dmg6k5CugOsij3Ax g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-dmg6k5CugOsij3Ax .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-dmg6k5CugOsij3Ax .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-dmg6k5CugOsij3Ax .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-dmg6k5CugOsij3Ax .dashed-line{stroke-dasharray:3}#mermaid-svg-dmg6k5CugOsij3Ax #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-dmg6k5CugOsij3Ax #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-dmg6k5CugOsij3Ax #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-dmg6k5CugOsij3Ax #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-dmg6k5CugOsij3Ax #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-dmg6k5CugOsij3Ax #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-dmg6k5CugOsij3Ax #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-dmg6k5CugOsij3Ax #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-dmg6k5CugOsij3Ax .commit-id,#mermaid-svg-dmg6k5CugOsij3Ax .commit-msg,#mermaid-svg-dmg6k5CugOsij3Ax .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-dmg6k5CugOsij3Ax .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-dmg6k5CugOsij3Ax .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-dmg6k5CugOsij3Ax g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-dmg6k5CugOsij3Ax g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-dmg6k5CugOsij3Ax g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-dmg6k5CugOsij3Ax g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-dmg6k5CugOsij3Ax g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-dmg6k5CugOsij3Ax g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-dmg6k5CugOsij3Ax .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-dmg6k5CugOsij3Ax .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-dmg6k5CugOsij3Ax .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-dmg6k5CugOsij3Ax .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-dmg6k5CugOsij3Ax .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-dmg6k5CugOsij3Ax .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-dmg6k5CugOsij3Ax .edgeLabel text{fill:#333}#mermaid-svg-dmg6k5CugOsij3Ax .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-dmg6k5CugOsij3Ax .node circle.state-start{fill:black;stroke:black}#mermaid-svg-dmg6k5CugOsij3Ax .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-dmg6k5CugOsij3Ax #statediagram-barbEnd{fill:#9370db}#mermaid-svg-dmg6k5CugOsij3Ax .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-dmg6k5CugOsij3Ax .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-dmg6k5CugOsij3Ax .statediagram-state .divider{stroke:#9370db}#mermaid-svg-dmg6k5CugOsij3Ax .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-dmg6k5CugOsij3Ax .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-dmg6k5CugOsij3Ax .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-dmg6k5CugOsij3Ax .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-dmg6k5CugOsij3Ax .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-dmg6k5CugOsij3Ax .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-dmg6k5CugOsij3Ax .note-edge{stroke-dasharray:5}#mermaid-svg-dmg6k5CugOsij3Ax .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-dmg6k5CugOsij3Ax .error-icon{fill:#522}#mermaid-svg-dmg6k5CugOsij3Ax .error-text{fill:#522;stroke:#522}#mermaid-svg-dmg6k5CugOsij3Ax .edge-thickness-normal{stroke-width:2px}#mermaid-svg-dmg6k5CugOsij3Ax .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-dmg6k5CugOsij3Ax .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-dmg6k5CugOsij3Ax .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-dmg6k5CugOsij3Ax .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-dmg6k5CugOsij3Ax .marker{fill:#333}#mermaid-svg-dmg6k5CugOsij3Ax .marker.cross{stroke:#333}
:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}
#mermaid-svg-dmg6k5CugOsij3Ax {
color: rgba(0, 0, 0, 0.75);
font: ;
}
Map集合的主要体系
HashMap集合 实现类
TreeMap集合 实现类
LinkedHashMap集合 实现类
HashTable集合 实现类
ConccurentHashMap集合 实现类
提示: 有关Map中的方法可不止上面这些,其他方法可以自行查看API学习。 注意:这张图只是我们常用的集合有这些,不是说就只有这些集合。
1.2 Map 常用API
目标:Map集合的常用API(重点中的重点) key=value
public V put(K key, V value): 把指定的键与指定的值添加到Map集合中。public V remove(Object key): 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。public V get(Object key) 根据指定的键,在Map集合中获取对应的值。public Set<K> keySet(): 获取Map集合中所有的键,存储到Set集合中。public Set<Map.Entry<K,V>> entrySet(): 获取到Map集合中所有的键值对对象的集合(Set集合)。public boolean containKey(Object key):判断该集合中是否有此键。public boolean containValue(Object value):判断该集合中是否有此值。
public static void main(String
[] args
) {
Map
<String , Integer> maps
= new HashMap<>();
maps
.put("iphoneX",10);
maps
.put("娃娃",30);
maps
.put("iphoneX",100);
maps
.put("huawei",1000);
maps
.put("生活用品",10);
maps
.put("手表",10);
System
.out
.println(maps
);
System
.out
.println(maps
.isEmpty());
Integer value
= maps
.get("娃娃");
System
.out
.println(value
);
System
.out
.println(maps
.remove("iphoneX"));
System
.out
.println(maps
);
System
.out
.println(maps
.containsKey("iphoneX"));
System
.out
.println(maps
.containsKey("生活用品"));
System
.out
.println(maps
.containsValue(10));
System
.out
.println(maps
.containsValue(30));
System
.out
.println(maps
.containsValue(10000));
Set
<String> keys
= maps
.keySet();
System
.out
.println(keys
);
Collection
<Integer> values
= maps
.values();
System
.out
.println(values
);
System
.out
.println(maps
.size());
Map
<String,Integer> maps2
= new HashMap<>();
maps2
.put("xiaoMi" , 1);
maps2
.put("🔨手机" , 10);
maps2
.put("手表" , 10000);
maps
.putAll(maps2
);
System
.out
.println(maps
);
}
2 HashMap 遍历方式
Map集合的遍历方式是全部集合都可以直接使用的,Map集合的遍历方式有:3种。 1)“键找值”的方式遍历:先获取Map集合全部的键,再根据遍历键找值。 2)“键值对”的方式遍历:难度较大。 3)JDK 1.8开始之后的新技术:Lambda表达式。(暂时了解)
2.1 for循环键找值
遍历方式:先提取Map集合全部键的Set集合,再遍历键的Set集合,然后通过键找值。
public static void main(String
[] args
) {
Map
<String , Integer> maps
= new HashMap<>();
maps
.put("娃娃", 30);
maps
.put("iphoneX", 100);
maps
.put("huawei", 1000);
maps
.put("生活用品", 10);
maps
.put("手表", 10);
System
.out
.println(maps
);
Set
<String> keys
= maps
.keySet();
for (String key
: keys
) {
System
.out
.println(key
+ " = " + maps
.get(key
));
}
}
2.2 foreach遍历
public static void main(String
[] args
) {
Map
<String , Integer> maps
= new HashMap<>();
maps
.put("娃娃",30);
maps
.put("iphoneX",100);
maps
.put("huawei",1000);
maps
.put("生活用品",10);
maps
.put("手表",10);
System
.out
.println(maps
);
Set
<Map
.Entry
<String, Integer>> entries
= maps
.entrySet();
for (Map
.Entry
<String, Integer> entry
: entries
) {
String key
= entry
.getKey();
Integer value
= entry
.getValue();
System
.out
.println(key
+ "===>" + value
);
}
}
2.3 forEach 的Lambda表达式
JDK 1.8开始之后的新技术Lambda表达式。
public static void main(String
[] args
) {
Map
<String, Integer> maps
= new HashMap<>();
maps
.put("娃娃", 30);
maps
.put("iphoneX", 100);
maps
.put("huawei", 1000);
maps
.put("生活用品", 10);
maps
.put("手表", 10);
System
.out
.println(maps
);
maps
.forEach((k
, v
) -> {
System
.out
.println(k
+ "==>" + v
);
});
}
2.4 map 自定义引用数据类型
public class Orange {
private String name
;
private double weight
;
private String price
;
......
}
public static void main(String
[] args
) {
Map
<String, Orange> maps
= new HashMap<>();
Orange o1
= new Orange("黄橘子", 20.2, "贼便宜");
Orange o2
= new Orange("黑橘子", 230.2, "贼便宜");
Orange o3
= new Orange("绿橘子", 20.2, "便宜");
Orange o4
= new Orange("臭橘子", 220.2, "贼便宜");
maps
.put("广州 ", o1
);
maps
.put("梅州 ", o2
);
maps
.put("上海 ", o3
);
maps
.put("深圳 ", o4
);
System
.out
.println(maps
);
}
3 LinkedHashMap
LinkedHashMap是HashMap的子类。 – 添加的元素按照键有序,不重复的。 HashSet集合相当于是HashMap集合的键都不带值。 LinkedHashSet集合相当于是LinkedHashMap集合的键都不带值。 底层原理完全一样,都是基于哈希表按照键存储数据的, 只是HashMap或者LinkedHashMap的键都多一个附属值。
public static void main(String
[] args
) {
Map
<String, Integer> maps
= new LinkedHashMap<>();
maps
.put("inhone", 10);
maps
.put("娃娃", 100);
maps
.put("huawei", 1000);
maps
.put("生活用品", 10);
maps
.put("手表", 19);
System
.out
.println(maps
);
}
4 TreeHashMap
TreeMap集合按照键是可排序不重复的键值对集合。(默认升序) TreeMap集合按照键排序的特点与TreeSet是完全一样的。 小结: TreeMap集合和TreeSet集合都是排序不重复集合 TreeSet集合的底层是基于TreeMap,只是键没有附属值而已。 所以TreeMap集合指定大小规则有2种方式:
直接为对象的类实现比较器规则接口Comparable,重写比较方法(拓展方式)直接为集合设置比较器Comparator对象,重写比较方法.优先使用集合自带比较器比较!
public class Pig implements Comparable{
private String name
;
private double price
;
private double weight
;
.......
@Override
public boolean equals(Object o
) {
if (this == o
) return true;
if (o
== null
|| getClass() != o
.getClass()) return false;
Pig pig
= (Pig
) o
;
return Double
.compare(pig
.price
, price
) == 0 &&
Double
.compare(pig
.weight
, weight
) == 0 &&
Objects
.equals(name
, pig
.name
);
}
@Override
public int hashCode() {
return Objects
.hash(name
, price
, weight
);
}
@Override
public int compareTo(Object o
) {
Pig p
= (Pig
) o
;
return Double
.compare(this.weight
, p
.weight
);
}
}
public static void main(String
[] args
) {
Map
<Integer, String> maps
= new TreeMap<>();
maps
.put(1000000, "张三");
maps
.put(1000000, "张三1");
maps
.put(10000, "李四");
maps
.put(10, "王五");
maps
.put(24244, "张麻子");
System
.out
.println(maps
);
Map
<String,Pig> pigs
= new TreeMap<>();
pigs
.put("荷兰", new Pig("🐖佩奇", 99.5, 500.0));
pigs
.put("澳大利亚", new Pig("🐖乔治", 99.4, 605.0));
pigs
.put("山上", new Pig("🐗野猪", 199.4, 305.0));
pigs
.put("山上2", new Pig("🐗野猪", 199.4, 305.0));
System
.out
.println(pigs
);
Map
<Pig, String> pigs2
= new TreeMap<>(new Comparator<Pig>() {
@Override
public int compare(Pig o1
, Pig o2
) {
return Double
.compare(o1
.getPrice(), o2
.getPrice()) != 0 ? Double
.compare(o1
.getPrice(), o2
.getPrice()) : 1;
}
});
pigs2
.put(new Pig("🐖佩奇", 99.5, 500.0), "荷兰1");
pigs2
.put(new Pig("🐖乔治", 99.4, 605.0), "澳大利亚2");
pigs2
.put(new Pig("🐗野猪", 199.4, 305.0), "山上3");
pigs2
.put(new Pig("🐗野猪", 199.4, 305.0), "山上4");
System
.out
.println(pigs2
);
}
5 HashTable
线程安全性能低
5 ConccurentHashMap
线程安全性能高