java - Java 在编译时收到警告
问题描述
我正在编写一个它编译的程序,但代码给了我一个警告,它使用未经检查或不安全的操作。用 -Xlint 重新编译。我找不到错误。请帮我解决这个问题。
import java.io.*;
import java.util.*;
public class A1{
private HashMap<String,ArrayList<Integer>> data= new HashMap<String,ArrayList<Integer>>();
public void main () throws IOException{
BufferedReader ob=new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(ob.readLine());
for(int i=0;i<t;i++){
String a=ob.readLine();
String spl[]= a.split(" ");
ArrayList<Integer> inputs= new ArrayList<Integer>();
for(int j=0;j<Integer.parseInt(spl[0]);j++){
int prices=Integer.parseInt(ob.readLine());
inputs.add(prices);
}
Collections.sort(inputs);
data.put(spl[1],inputs);
}
Iterator iter = data.entrySet().iterator();
while(iter.hasNext()){
Map.Entry ele = (Map.Entry)iter.next();
int fund=Integer.parseInt((String)ele.getKey());
System.out.println(maxhouse(fund,(ArrayList<Integer>)ele.getValue()));
}
}
int maxhouse(int fund,ArrayList<Integer> a){
int sum=0;
int c=0;
for(int i=0;i<a.size();i++){
sum=sum+a.get(i);
if(sum<fund){
c++;
}
else if(sum==fund){
c++;
break;
}
else{
break;
}
}
return c;
}
}
解决方案
好吧,您可以在这里进行一些更改,根据评论,有些更改不应该使用 RAW 类型。因此将迭代器更改为 -
Iterator<Entry<String, ArrayList<Integer>>> iter = data.entrySet().iterator();
然后将您更改Map.Entry
为 -
Entry<String, ArrayList<Integer>> ele = iter.next();
您还可以利用 java8Map.foreach
来lambda expressions
避免所有这些,并使代码更加出色和美观。
data.forEach((key,value) -> {
int fund = Integer.parseInt(key);
System.out.println(maxhouse(fund, value));
});
并避免编写使代码更干净。
Iterator iter = data.entrySet().iterator();
while(iter.hasNext()){
Map.Entry ele = (Map.Entry)iter.next();
int fund=Integer.parseInt((String)ele.getKey());
System.out.println(maxhouse(fund,(ArrayList<Integer>)ele.getValue()));
}
推荐阅读
- jsf - Joinfaces 支持 JSF Primefaces 10
- python - Tor 活动链接状态检查器
- mysql - 如何解决连接过多
- geckodriver - Geckodriver Selenium/Java 无法在 macOS Big Sur 上运行
- azure - 在 signin_signup 自定义策略中 EnforceIdTokenHintOnLogout="true" 时出现 Azure AD B2C 错误“未指定 id_token_hint 参数”
- android - 为什么我不能使用 asyncTask
- python - 如何在角图中以不同方式格式化中位数和误差?
- javascript - chart.js 我们如何提取点击的变量?
- python - 电子邮件发送但在python中未收到
- elixir - 如何在 Elixir Ecto 中使用动态比较运算符?