gpt4 book ai didi

java - 将文件内容复制到链表数组中并对其进行排序

转载 作者:搜寻专家 更新时间:2023-11-01 03:40:49 24 4
gpt4 key购买 nike

我有一个逗号分隔的文件,其中包含员工姓名、公司、年份。

一名员工可能隶属于多家公司。

例如,

John,Google,2
John,Microsoft,1
James,Tesla,1
James,Apple,5

我已经使用 java 扫描器检索了信息

scanner.useDelimiter(",|\\n");
while (scanner.hasNext()) {
String line = scanner.next()

我是 Java 的新手,我正在尝试使用链表数组或数组数组按排序顺序(使用经验作为排序标准)插入上述内容。所以

employee -> Company1 -> Company2....(按员工经验排序)

所以在上面的例子中,它将是:

John->Microsoft->google
James->Tesla->Apple

有人能指出我正确的方向吗?

注意:如果体验相同,则哪家公司先到并不重要。

最佳答案

为 Person 使用这个类

公共(public)类人物{

@Getter @Setter
private String name;

@Getter @Setter
private TreeMap<String, String> companyExperience;

public Person(){
companyExperience = new TreeMap<String, String>();
}

在 TreeMap 中使用经验作为键将自动按升序对人员的公司进行排序。

你的主类应该是这样的

public class App 
{
public static void main( String[] args )
{
HashMap<String, Person> persons = new HashMap<String, Person>();

BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("C:\\Users\\Public Administrator\\test.txt"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String line = null;

try {
while ((line = br.readLine()) != null) {
String[] fields = line.split(",");
String personName = fields[0];
Person existingPerson = persons.get(personName);
if (existingPerson==null){
Person newPerson = new Person();
newPerson.setName(personName);
newPerson.getCompanyExperience().put(Integer.parseInt(fields[2])+fields[1], fields[1]);
persons.put(personName, newPerson);
} else{
existingPerson.getCompanyExperience().put(Integer.parseInt(fields[2])+fields[1], fields[1]);
}
}
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

//output
Iterator<Map.Entry<String, Person>> entries = persons.entrySet().iterator();
while (entries.hasNext()) {
Map.Entry<String, Person> entry = entries.next();
Person _person = entry.getValue();
System.out.print(_person.getName());

Iterator<Map.Entry<String, String>> companyExperiences = _person.getCompanyExperience().entrySet().iterator();
while (companyExperiences.hasNext()) {
Map.Entry<String, String> companyExperience = companyExperiences.next();

System.out.print(" > "+companyExperience.getValue());
}
System.out.println();

}
}
}

我已经测试过了,看起来很漂亮,对我来说非常好。

顺便说一句,@Getter 和@Setter 注解来自于Lombok 项目。您可以使用它或创建自己的 getter/setter。

关于java - 将文件内容复制到链表数组中并对其进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14844787/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com