寻找队列中唯一的名称计数

时间:2017-02-12 18:04:47

标签: java queue

在这个队列中,我对如何计算唯一名称的数量感到困惑。示例:(詹姆斯,约翰,詹姆斯,肯,黛比,本)在阵列中,我想接收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);
}

2 个答案:

答案 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...