Collections.frequency在Android中无法正常运行

时间:2015-05-28 01:18:57

标签: java android hashset

我的Android手机中有一个代码可以通过collections.frequency查找重复的数字。此代码仅在android上的java程序中正常工作。但不是作为Android上的应用程序。这是我在android中的代码。

ArrayList<String> ll = new ArrayList<String>();
String item = inputText.getText().toString();
ll.add(item);
HashSet<String> set = new HashSet<>(ll);
for (String temp : set)
{
    answertext.setText(temp + "shows that many times: " + Collections.frequency(ll, temp));
}

输出如下:

33 44 33 44 shows that many times: 1

如果用户通过文本框输入数字,则找不到任何重复项。 但是,如果在代码中取消userinput并将其替换为此输入:

ll.add("33");
ll.add("44");
ll.add("33");
ll.add("44");
ll.add("24");
ll.add("24");

输出将如此:

44 shows that many times: 2

因此,在此输入中,collections.frequency正在查找重复的数字。但为什么只有一个数字?为什么44而不是33?为什么它不输出所有重复的数字,就像它只在手机上作为java程序一样。没有涉及Android? 我想通过文本框中的userinput使其工作。 在它工作正常的Java端我得到了这个代码:

List<String> list = new ArrayList<String>();
Scanner stdin = new Scanner(System.in);
System.out.println("Enter the amount of numbers you want to input: Input numbers separated by a space.");
int n = stdin.nextInt();
for (int i = 0; i < n; i++) 
{
    list.add(stdin.next());
}
System.out.println("\nCount all with frequency");
Set<String> uniqueSet = new HashSet<String>(list);
for (String temp : uniqueSet) 
{
    System.out.println(temp + " shows that many times : " + Collections.frequency(list, temp)); 
}
//Enter the amount of numbers you want to input
12 //hit the return key
22 33 44 22 33 44 22 33 44 22 33 44
//the output is like so:
Count all with frequency
33 shows that many times: 4
44 shows that many times: 4
22 shows that many times: 4

为什么这段代码在Java中运行而在android上运行?

1 个答案:

答案 0 :(得分:0)

String item = inputText.getText().toString();
ll.add(item);

这会在列表中添加一个项目。我猜你想单独添加每个单词,你可以这样做:

// split the input apart at the spaces
String[] items = inputText.getText().toString().split(" ");

// then add each part separately to the list
for(String item : items)
    ll.add(item);

你的第二个问题是setText ...设置了文本。它没有添加到文本的末尾,它取代了已经存在的内容。我不知道你打算如何显示多个字符串,但你可以这样做:

// clear answertext
answertext.setText("");

for (String temp : set)
{
    // set the text to <whatever was already there> followed by this item
    answertext.setText(answertext.getText() + temp + "shows that many times: " + Collections.frequency(ll, temp) + "\n");
}