java - 使用逻辑读取具有多列的文本文件

标签 java algorithm

我正在读取一个包含多列的文本文件,并将信息存储在一个数组中

文件看起来像这样

Player   |   Team
---------| ---------
PlayerA  |  Team1
PlayerA  |  Team2
PlayerB  |  Team3
PlayerC  |  Team4
PlayerC  |  Team5

如您所见,每个玩家都有多个团队。我试图逐行读取此文件,以便在文件末尾有一个包含三个玩家(A、B 和 C)的列表,每个玩家都有相应的团队。

类:

Player - with Name and List<Team> (getter setter for both)
Team   - with Name (getter and setter)

我无法弄清楚何时创建 Player 和 Team 类以及记录何时更改玩家名称的逻辑

最佳答案

你可以封装你的personteam在两个类(class)里面PersonTeam ..

然后,您可以使用 Map<Person, List<Team>>为每个人维护不同的团队..

Map<Person, List<Team>> mapping = new HashMap<>();

// Read each line from file..

// Get Person and Team object..

// Assuming that you have your `Person` object in person and `Team` object in team

// You need a Comparator for `Person` class to check for `containment`..
if (mapping.contains(person)) {

    // Person already exist.. Update the list of Team he has
    mapping.get(person).add(team);

} else {

    // New entry.. create a new list.. and add it to map..
    List<Team> teamList = new ArrayList<>();
    teamList.add(team);
    mapping.put(person, teamList);
}

注意:- 你需要有一个 Comparator为你的 Person要比较的类..

我想我已经给了你一个工作的基础..剩下的你需要变通..如何填充你的对象..如何实现比较器..等等..

关于java - 使用逻辑读取具有多列的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12764752/

相关文章:

java - 如何检测我的 bean 中的(无意的)只写属性?

java - JSON中如何按属性进行计数?

c++ - 给定日期范围生成工作日日期的算法

algorithm - 将一条曲线拟合到另一条曲线的某段

Java - 类型不匹配(但两者都来自相同类型?!) : cannot convert from HashMap<Integer, ArrayList<Integer>> 到 HashMap<Integer,ArrayList<Integer>>

java - 将 SpringMVC 应用程序连接到 Android 应用程序的 MBaaS

java - 在整个 Android Java 项目中读取和修改列表的正确方法是什么?

Python:为无标度网络实现逐步修改的 Barabasi-Albert 模型

python - 在 Pandas 数据框中的 2 个日期之间添加日期列

C中特定值的数字加减组合