在这个队列中,我对如何计算唯一名称的数量感到困惑。示例:(詹姆斯,约翰,詹姆斯,肯,黛比,本)在阵列中,我想接收4个唯一名称的结果(唯一的名字是约翰,肯,黛比,本)。但我不知道如何计算Java中唯一的String名称。
import java.util.Queue;
import java.util.Scanner;
public static void main(Queue<String> args) {
Queue<String> a=new Queue<String>();
int n=0;
while(n<5){
System.out.print("Enter name");
a.add(name);
n=n+1
}
System.out.print("the number of unique names are"+ unique.a);
}
答案 0 :(得分:1)
正如@matoni所指出的,Set
类将防止重复。但是关于您的规范,您还有一个额外的要求:不应计算非唯一名称。单靠Set
无法实现这一点(例如,Set
将包含名称“James”,因此将被计算在内。)
我建议这个小技巧:你在名为HashSet
的{{1}}(Set
的非抽象实现)中插入名称。如果uniqueNames
中已存在名称,则将其插入名为uniqueNames
的单独HashSet
中。要计算唯一名称(根据您的定义),您只需要从nonUniqueNames
的大小中减去nonUniqueNames
的大小。
uniqueNames
答案 1 :(得分:0)
使用Set
的某些实现,例如TreeSet
您添加所有Queue
项目的地方。 Set
结构会自动抑制重复。
Queue<String> names = new LinkedList<>();
// your code...
Set<String> uniqueNames = new TreeSet<>(names);
int numberOfUniqueNames = uniqueNames.size();
// do something with count...