谁能向我解释这段代码,因为我对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));
}
为什么在
uniquelist
具有stringList
的所有成员的情况下,此循环仅运行3次。循环不应该运行10次(uniqueList
的长度)吗? 最佳答案
for循环仅执行3次,因为stringList
中只有3个不同的值。
Set
不允许重复输入。 Set
使用.equals()
检查条目,对于两个重复的条目,这将是true
。因此,uniqueList
中只有三个元素,即:"1"
,"2"
和"3"
。
注意,"2".equals("2")
是true
。
这是javadoc最重要的部分:
不包含重复元素的集合。更正式地说,集合不包含一对元素e1
和e2
这样的e1.equals(e2)
,并且最多包含一个null元素。