判定List<String>中数量

判定List<String>中String数量
//对象

public class WordsCounter
{
public String text;
public int count;
public WordsCounter()
{
text="";
count=0;
}

public WordsCounter(String t,int c)
{
text=t;
count=c;
}
}

//方法
public class Test
{
List<WordsCounter> wordsCountList=new ArrayList<WordsCounter>();
List<String> wordsList=new ArrayList<String>();
//统计词汇频数
for(String word:wordsList)//循环wordsList中的看看这个分词在List中个数
{
boolean match=false;//标示是否存在
for(int i=0;i<wordsCountList.size();i++)
{
if(word.equals(wordsCountList.get(i).text))//如果存在
{
wordsCountList.get(i).count++;
match=true;//如果存在数字加1,match告知外部
break;
}
}
if(match==false)//如果没有的话,加入对象
{
wordsCountList.add(new WordsCounter(word,1));
}
}
}
从代码片段来看,您正在通过原生SQL查询数据库,并将结果映射到`SESHRMRiskHandle`实体列表中。关于是否会引发空指针异常的问题,需要分析以下几个关键点: --- ### **1. 可能导致空指针的原因** - **riskHandleDao是否为空** 如果`riskHandleDao`未正确初始化(即为null),调用其方法`createNativeQuery(...)`会直接抛出空指针异常。 - **SQL语法是否有误** 您的SQL字符串中包含了一个奇怪的部分:`DANGER_STATE = 'SESHRM_dangerState/1'`。如果这里的值是一个变量而不是硬编码字符串,则可能导致错误的结果集甚至运行时异常。如果是动态拼接进来的,请确认该部分是否正确赋值。 - **返回结果是否会被处理不当** 假设查询成功并返回了数据,但如果没有任何匹配记录,那么`list()`方法可能会返回一个空集合(而非null)。然而,后续对`riskHandleCheckList`的操作若未经判空检查也可能间接触发空指针问题。 --- ### **2. 解决方案建议** #### (1)风险规避措施 ```java if (riskHandleDao == null) { throw new IllegalStateException("DAO对象未初始化!"); } String sqlForRiskCheck = "SELECT * FROM SES_HRM_RISKHANDLES WHERE VALID = 1 AND STATUS = 88 AND DANGER_STATE = :dangerParam"; // 使用命名参数代替直连字符串以增强安全性及灵活性。 TypedQuery<SESHRMRiskHandle> query = riskHandleDao.createNativeQuery(sqlForRiskCheck, SESHRMRiskHandle.class); query.setParameter("dangerParam", "SESHRM_dangerState/1"); try { List<SESHRMRiskHandle> riskHandleCheckList = query.getResultList(); if (riskHandleCheckList != null && !riskHandleCheckList.isEmpty()) { // 对非空结果进一步操作... } else { System.out.println("无符合条件的数据"); } } catch (Exception e) { e.printStackTrace(); // 异常捕获很重要,可以定位具体原因如SQL错、连接断开等。 } ``` #### (2)调试技巧 添加日志打印或者断点查看: - `sqlForRiskCheck`的内容是否准确; - 查询后的实际结果为何物(尤其是当预期有内容却得到空白时)。 --- ### **3. 总结** 仅凭当前信息无法确切判定此段代码一定会发生空指针错误,但它确实存在潜在隐患,尤其是在依赖外部输入的情况下更应格外小心地做校验工作!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值