如何计算 java 中 arraylist 上的相同标记
how to count same token on arraylist in java
我有一个像这样的数组列表:
ArrayList<String> hasil = new ArrayList<String>();
hasil.add("saya makan saya");
hasil.add("makan kamu saya");
hasil.add("kamu dimana");
我想计算 arraylist 上的标记。
我想要这样的输出:
saya = 3, makan = 2, kamu = 2, dimana = 1
我有这样的代码数:
for (int i = 0; i < hasil.size(); i++) {
arr = hasil.get(i).split(" ");
for (int j = 0; j < arr.length; j++) {
temp.put(arr[j], 0);
}
}
但输出比我这样:
3 , 3 , 2 。只计算令牌不相同的令牌。
我已经将每个单词的计数存储在 Hashmap 中。我想检查 hashmap 中是否存在单词然后计数 ++;
我试过这样写代码,但还是错了
for (int i = 0; i < arr.length; i++) {
for(Map.Entry<String,Integer> input : temp.entrySet()){
if(input.getKey().contains(arr[i])){
c++;
}
}
System.out.println("" + c);
c=0;
}
谁能帮帮我?
谢谢
ArrayList<String> hasil = new ArrayList<String>();
hasil.add("saya makan saya");
hasil.add("makan kamu saya");
hasil.add("kamu dimana");
Map<String, Integer> tokenCount = new HashMap<>();
for (String phrase : hasil) {
String[] tokens = phrase.split(" ");
for (String token : tokens) {
Integer count = tokenCount.get(token);
if (count == null)
count = 0; // first time this token was found
tokenCount.put(token, count+1);
}
}
这可以通过 Java8 实现:
Map<String, Integer> counts = hasil.parallelStream()
.flatMap(elm -> Arrays.stream(elm.split(" ")))
.collect(Collectors.toConcurrentMap(w -> w, w -> 1, Integer::sum));
System.out.println(counts);
输出将是:
{saya=3, dimana=1, makan=2, kamu=2}
我有一个像这样的数组列表:
ArrayList<String> hasil = new ArrayList<String>();
hasil.add("saya makan saya");
hasil.add("makan kamu saya");
hasil.add("kamu dimana");
我想计算 arraylist 上的标记。 我想要这样的输出: saya = 3, makan = 2, kamu = 2, dimana = 1
我有这样的代码数:
for (int i = 0; i < hasil.size(); i++) {
arr = hasil.get(i).split(" ");
for (int j = 0; j < arr.length; j++) {
temp.put(arr[j], 0);
}
}
但输出比我这样: 3 , 3 , 2 。只计算令牌不相同的令牌。 我已经将每个单词的计数存储在 Hashmap 中。我想检查 hashmap 中是否存在单词然后计数 ++; 我试过这样写代码,但还是错了
for (int i = 0; i < arr.length; i++) {
for(Map.Entry<String,Integer> input : temp.entrySet()){
if(input.getKey().contains(arr[i])){
c++;
}
}
System.out.println("" + c);
c=0;
}
谁能帮帮我? 谢谢
ArrayList<String> hasil = new ArrayList<String>();
hasil.add("saya makan saya");
hasil.add("makan kamu saya");
hasil.add("kamu dimana");
Map<String, Integer> tokenCount = new HashMap<>();
for (String phrase : hasil) {
String[] tokens = phrase.split(" ");
for (String token : tokens) {
Integer count = tokenCount.get(token);
if (count == null)
count = 0; // first time this token was found
tokenCount.put(token, count+1);
}
}
这可以通过 Java8 实现:
Map<String, Integer> counts = hasil.parallelStream()
.flatMap(elm -> Arrays.stream(elm.split(" ")))
.collect(Collectors.toConcurrentMap(w -> w, w -> 1, Integer::sum));
System.out.println(counts);
输出将是:
{saya=3, dimana=1, makan=2, kamu=2}