谁能向我解释这段代码,因为我对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最重要的部分:

不包含重复元素的集合。更正式地说,集合不包含一对元素e1e2这样的e1.equals(e2),并且最多包含一个null元素。

09-04 09:32