Java在编译时出现警告[重复]

问题描述 投票:0回答:1
[我正在编写一个可以编译的程序,但是代码警告我它使用了未经检查或不安全的操作。请使用-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; } }

java bluej
1个回答
0
投票
好,您可以在此处进行一些更改,根据注释,某些更改永远不要使用RAW类型。因此将迭代器更改为-

Iterator<Entry<String, ArrayList<Integer>>> iter = data.entrySet().iterator();

然后将Map.Entry更改为-

Entry<String, ArrayList<Integer>> ele = iter.next();

此外,您还可以利用java8 Map.foreachlambda 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())); }

© www.soinside.com 2019 - 2024. All rights reserved.