问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

JAVA程序的搜索和排序问题

发布网友 发布时间:2022-04-23 03:17

我来回答

1个回答

热心网友 时间:2023-08-14 14:00

package com.wjy.test;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;

public class SearchAndSort {

private InputStream in = null;
    
private String filePath = "C:\\杂\\test.txt";

public static void main(String[] args) {

SearchAndSort sas = new SearchAndSort();

String[] keyword = {"等待","公司", "数据"}; // 关键词

String[] weightWords = {"数据"}; // 权重词

Map<String, String> map = new HashMap<String, String>(); // 结果集

String fileContent = sas.readFile();
for (String word : keyword) { // 处理关键词,并将结果插入结果集
map = sas.countWord(fileContent, word, map);
}

// 通过ArrayList构造函数把map.entrySet()转换成list
List<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>(map.entrySet()); 
// 通过比较器实现比较排序 
Collections.sort(list, new Comparator<Map.Entry<String, String>>() {
public int compare(Map.Entry<String, String> mapping1, Map.Entry<String, String> mapping2) {
return mapping1.getValue().compareTo(mapping2.getValue());
}
});

Iterator<String> keys = map.keySet().iterator();
while(keys.hasNext()) { // 迭代打印结果集
String key = keys.next();
String value = map.get(key);
for (String str : weightWords) { // 比较关键词是否为权重词
if (str.equals(key)) { // 权重词在后面加X
value = value + "X";
break;
}
}
System.out.println(key + "出现" + value + "次");
}
}

/**
 * 
 * 读取文件返回文件内容
 * 
 * @return
 */
public String readFile() {
        try {
in = new FileInputStream(filePath);
InputStreamReader isr = new InputStreamReader(in, Charset.forName("GBK"));
BufferedReader br = new BufferedReader(isr);
StringBuffer sb = new StringBuffer();
String line = " ";
// 利用StringBuffer将文件内容读成一行
while ((line = br.readLine()) != null){
sb.append(line);
}
// String content = sb.toString();
// 因为有部分内容因为换行导致原本在一起的内容分开,所以这里将字符串中的回车、换行等去掉
String content = Pattern.compile("\t|\r|\n").matcher(sb.toString()).replaceAll("");
//System.out.println(content);
        return content;
} catch (Exception e) {
e.printStackTrace();
} finally {
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e1) {
                e1.printStackTrace();
                }
            }
        }
        return null;
}

/**
 * 
 * 统计关键词在文件内容中出现的次数
 * 
 * @param fileContent
 * @param word
 * @param map
 * @return
 */
public Map<String, String> countWord(String fileContent, String word, Map<String, String> map) {
int count = 0;
int length = word.length();
String content = fileContent;
int index = content.indexOf(word);
while (index != -1) { // 计算关键词出现次数
index = content.indexOf(word);
if (index == -1) {
break;
}
// 截取掉当前取到的关键词
content = content.substring(index + length);
count++;
}
map.put(word, count + "");
return map;
}
}


声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 java中怎么搜索一个字符串中的所有英文单词 JAVA 搜索目录下符合条件的文件 被永久封了怎么办? java 搜索引擎 被永久封号的话,就不可能找回来了么?还是有什么方法可以找回来? JAVA 动态搜索(查找) 在线等 如何查找java路径? 该已被永久限制是什么意思?还能好吗,还能恢复回来吗 用Java如何实现站内搜索? JAVA如何实现全局搜索 Java怎么在整个项目中搜索某一个词 java如何实现文件搜索功能 我的永久被封了,还能解开吗? 被永久封号了如何解开 被永久封了怎么办? 请教:为什么西瓜视频分享钮不好用? 请问vⅰⅴo手机中西瓜视频中设置中为何找不到分享权限,手机中设置中也找不到 西瓜视频怎么才能发给好友? 我的西瓜视频能发到朋友圈,但朋友看不到,只有自己看 其... 西瓜视频不能播放是什么原因- 问一问 Java怎么指定文件里搜索关键字 java搜索文件的代码怎么写,返回文件的路径?求教 java 查找某字符串 JAVA 搜索一个词,显示含此词的句子 关于java搜索引擎 JAVA实现BAIDU的搜索功能 java中怎么搜索一个字符串中的所有英文单词? JAVA查找 java中如何模糊查找 微博怎么更改支付宝绑定?以前的支付宝不用了 我的支付宝绑定了别人的微博,没办法绑定自己的微博,我这个手机号应该以前是他人用过的原因,有办法吗 家用空调是怎样运行和制冷的? 新浪微博绑定了淘宝和支付宝,但是我换了手机号,淘宝账号支付宝账号 家用空调要怎么选择?注意哪些细节? 我正打算微博绑定支付宝,绑定的时候显示支付宝已绑定其他账号。可能是因为我手机号以前是别人的。然后我 家用空调怎么选择?求推荐 微博钱包绑定的支付宝,然后支付宝换手机号了,微博钱包解绑不了 家用空调买海尔空调怎么样?这个牌子空调好不好用啊? 支付宝账号绑定了其他的微博账号。而微博账号密码也忘了,手机号也没了。怎么解绑? 如何挑选家用空调?