📄 csdn技术中心 java集合框架 (二).htm
字号:
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt">void
trimToSize(): </SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Courier New'">整理</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt">ArrayList</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Courier New'">对象容量为列表当前大小。程序可使用这个操作减少</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt">ArrayList</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Courier New'">对象存储空间。</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">2.3.2.1.</SPAN></B><CODE><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 宋体">
</SPAN></CODE><CODE><B><SPAN lang=EN-US
style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana; mso-fareast-font-family: 宋体; mso-bidi-font-family: 'Courier New'">RandomAccess</SPAN></B></CODE><CODE><SPAN
style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'">接口</SPAN></CODE><CODE><B><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 宋体"><o:p></o:p></SPAN></B></CODE></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-tab-count: 1"> </SPAN></SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Courier New'">一个特征接口。该接口没有任何方法,不过你可以使用该接口来测试某个集合是否支持有效的随机访问。</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt">ArrayList</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Courier New'">和</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt">Vector</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Courier New'">类用于实现该接口。</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">3.</SPAN></B><B><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-size: 12.0pt">Set</SPAN></B><B><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt">接口<SPAN
lang=EN-US><o:p></o:p></SPAN></SPAN></B></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><CODE><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 华文仿宋">Set</SPAN></CODE><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt">
接口继承 </SPAN><CODE><SPAN lang=EN-US
style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 宋体">Collection</SPAN></CODE><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt">
接口,而且它不允许集合中存在重复项,每个具体的 </SPAN><CODE><SPAN lang=EN-US
style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 宋体">Set</SPAN></CODE><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt">
实现类依赖添加的对象的 </SPAN><CODE><SPAN lang=EN-US
style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-fareast-font-family: 宋体">equals()</SPAN></CODE><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt">方法来检查独一性。</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt">Set</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Courier New'">接口</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt">没有引入新方法,<SPAN
style="COLOR: black">所以</SPAN></SPAN><SPAN lang=EN-US
style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt">Set</SPAN><SPAN
style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt">就是一个</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt">Collection</SPAN><SPAN
style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt">,只不过其行为不同。</SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"
align=center><SPAN
style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt"><IMG
alt="" hspace=0
src="CSDN技术中心 Java集合框架 (二).files/CSDN_Dev_Image_2003-12-72224462.jpg"
align=baseline border=0></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center"
align=center><SPAN lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><B><SPAN lang=EN-US
style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Verdana">3.1.</SPAN></B><B><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt">
</SPAN></B><B><SPAN lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-size: 12.0pt">Hash</SPAN></B><B><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-bidi-font-size: 12.0pt">表</SPAN></B><B><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; mso-bidi-font-size: 12.0pt"><o:p></o:p></SPAN></B></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt"><SPAN
style="mso-tab-count: 1"> </SPAN></SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt">Hash</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Courier New'">表是一种数据结构,用来查找对象。</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt">Hash</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Courier New'">表为每个对象计算出一个整数,称为</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt">Hash
Code(</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Courier New'">哈希码</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt">)</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Courier New'">。</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt">Hash</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Courier New'">表是个链接式列表的阵列。每个列表称为一个</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt">buckets(</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Courier New'">哈希表元</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt">)</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Courier New'">。对象位置的计算 </SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt">index
= HashCode % buckets<SPAN style="mso-tab-count: 1">
</SPAN>(HashCode</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Courier New'">为对象哈希码,</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt">buckets</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Courier New'">为哈希表元总数</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt">)</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Courier New'">。</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Courier New'">当你添加元素时,有时你会遇到已经填充了元素的哈希表元,这种情况称为</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt">Hash
Collisions(</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Courier New'">哈希冲突</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt">)</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Courier New'">。这时,你必须判断该元素是否已经存在于该哈希表中。</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Courier New'">如果哈希码是合理地随机分布的,并且哈希表元的数量足够大,那么哈希冲突的数量就会减少。同时,你也可以通过设定一个初始的哈希表元数量来更好地控制哈希表的运行。初始哈希表元的数量为 </SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt">buckets
= size * 150% + 1<SPAN style="mso-tab-count: 1">
</SPAN>(size</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Courier New'">为预期元素的数量</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt">)</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Courier New'">。</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt"><o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Courier New'">如果哈希表中的元素放得太满,就必须进行</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt">rehashing(</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Courier New'">再哈希</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt">)</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-size: 12.0pt; mso-bidi-font-family: 'Courier New'">。再哈希使哈希表元数增倍,并将原有的对象重新导入新的哈希表元中,而原始的哈希表元被删除。</SPAN><SPAN
lang=EN-US
style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 12.0pt">load
factor(</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; ms
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -