Java 基于某些条件从映射中删除项目
我目前正在做一个关于java语言地图的大学项目 地图上有姓名、国籍和一些关于高尔夫球手的统计数据。我遇到的一个障碍是从南非撤走所有球员(共有2名) 有人知道在这种情况下我希望使用什么函数吗?我试过各种方法都没有用 谢谢你的帮助 添加编辑代码 这是我的主要方法Java 基于某些条件从映射中删除项目,java,maps,Java,Maps,我目前正在做一个关于java语言地图的大学项目 地图上有姓名、国籍和一些关于高尔夫球手的统计数据。我遇到的一个障碍是从南非撤走所有球员(共有2名) 有人知道在这种情况下我希望使用什么函数吗?我试过各种方法都没有用 谢谢你的帮助 添加编辑代码 这是我的主要方法 package assessmentmaps; import java.io.*; import java.util.*; public class AssessmentMaps { public static void main(Stri
package assessmentmaps;
import java.io.*;
import java.util.*;
public class AssessmentMaps {
public static void main(String[] args)
{
//Create a new map to store golfers and info
Map<String, Golfer> gMap = new HashMap<String, Golfer>();
try
{
//Declare new File, File Reader, and Buffered Reader
File myFile = new File("Top 20 golfers.txt");
FileReader fr = new FileReader(myFile);
BufferedReader br = new BufferedReader(fr);
String line = null;
while((line = br.readLine())!=null)
{
//Tokenize the String
StringTokenizer st = new StringTokenizer(line,",");
//While there are tokens to be read, assign tokens to a new
//golfer. Create Hashcodes for each golfer and add to map.
while(st.hasMoreTokens())
{
Golfer g = new Golfer(st.nextToken()
,st.nextToken()
,st.nextToken()
,st.nextToken());
String key;
key = Integer.toString(g.hashCode());
gMap.put(key, g);
}
}
}
catch(IOException e)
{
//If the file cannot be found, display this message
System.out.println("File not found");
}
//Task 7: Delete the players from RSA
System.out.println("\nTask 7: Delete the players from RSA");
for(Golfer g : values)
{
if(g.getCountry() == "RSA")
{
gMap.remove(g);
}
}
System.out.println(gMap);
}
}
} 很难用提供的详细信息给出一个好的答案。 不过,我会尽力: 假设您拥有表单的映射:
Map golferMap=newhashmap()代码>
在哪里
字符串(名称)是键和
ArrayList(关于高尔夫球手的其他统计信息)是值
<>你可以试试这样的东西(<强>注释:考虑这只是一个引用!< /强>):
//填充golferMap后
for(Iterator it=map.entrySet().Iterator();it.hasNext();)
{
Map.Entry=it.next();
如果(entry.getKey().national.equals(“南非”){
it.remove();
}
}
发布您当前拥有的代码—不可能用如此少的细节智能地回答问题。请分享您已经拥有的代码,这样我们至少有一个共同的讨论基础。这将取决于您如何在地图中存储详细信息。发布你的代码
package assessmentmaps;
public class Golfer
{
private String name;
private String country;
private String points;
private String events;
public Golfer(String name, String events, String points, String country)
{
this.name = name;
this.events = events;
this.points = points;
this.country = country;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getCountry()
{
return country;
}
public void setCountry(String country)
{
this.country = country;
}
public String getPoints()
{
return points;
}
public void setPoints(String points)
{
this.points = points;
}
public String getEvents()
{
return events;
}
public void setEvents(String events)
{
this.events = events;
}
@Override
public String toString()
{
return name + " " + events +" " + " " + points + " " + country;
}
@Override
public boolean equals(Object obj)
{
if (obj instanceof Golfer)
{
Golfer GolfPlayer = (Golfer)obj;
if(name.equalsIgnoreCase(GolfPlayer.name))
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
@Override
public int hashCode()
{
String hashStr = this.events + Math.round(Double.parseDouble(points));
int hash = Integer.parseInt(hashStr);
return hash;
}
//after populating the golferMap
for(Iterator<Map.Entry<String, ArrayList<String>>> it = map.entrySet().iterator(); it.hasNext();)
{
Map.Entry<String, ArrayList<String>> entry = it.next();
if(entry.getKey().nationality.equals("South Africa")){
it.remove();
}
}