这个Set和Hashset和List组合如何工作?

Jus*_*per 3 java collections set hashset

任何人都可以向我解释这个代码,我没有太多的编码经验,Collections所以我很难理解这些LOC.

String[] stringList ={"1","2","1","1","2","3","2","3","2","1"}; 
List<String> al =Arrays.asList(stringList); 
Set<String> uniqueList = new HashSet<String>(al); 
for (String strCount :uniqueList) { 
     System.out.println(strCount + ": " + Collections.frequency(al, strCount)); 
} 
Run Code Online (Sandbox Code Playgroud)

为什么这个循环只运行3次而uniquelist所有成员都运行stringList.循环不应该运行10次(长度uniqueList)?

Baz*_*Baz 12

for循环只执行三次,因为你的中只有3个不同的值stringList.

A Set不允许重复输入.Set带有的检查条目.equals(),将true用于两个重复的条目.因此,只有三个要素uniqueList,即:"1","2""3".

注意,"2".equals("2")就是这样true.

这是javadoc最重要的部分:

不包含重复元素的集合.更正式地,集包含没有对元件e1e2使得e1.equals(e2),和至多一个空元素.


mid*_*nhk 7

A SetCollection不包含重复元素的.由于您的数组仅包含1,2和3作为唯一元素,因此您的Set仅包含3个元素.

查看此文档链接.