如何按名称和年龄对文件中的数据进行排序 - Java

时间:2015-07-03 18:06:23

标签: java

我正在研究一个项目,并且必须弄清楚如何对文件中的数据进行排序,并按名字和年龄显示它(另外,因此有2个数据列表)。我正在考虑将数据输入到数组中,但显然数组必须从文件中提取数据然后显示它。这有点难以解释,所以这里有一个例子:

如果文件中的数据是:

  鲍勃史密斯   10个
  萨拉
  8
  迈克
  12个
  斯科特布朗   14

我必须显示它,所以输出看起来更像是这样:

  

按年龄排序:
  斯科特布朗14   迈克12
  鲍勃史密斯10
  莎拉8

     

按名称排序:
  鲍勃史密斯10
  迈克12
  莎拉8
  斯科特布朗14

我认为我对如何编写代码进行排序是非常好的理解,如果它是硬编码的(不幸的是我不允许对其进行硬编码),但我很困惑如何将数据拉出来从文件中使用它来对其进行排序然后显示它。我开始编写一个do while循环,它包含一个for循环和一个if语句来对名称进行排序,但最大的问题是如何使用THAT文件中的数据并显示它。

对不起,如果听起来很混乱,我就迷失了!

2 个答案:

答案 0 :(得分:1)

考虑使用Collections及其排序机制以及各种比较器。我认为这就是你要找的东西。

请查看此post

答案 1 :(得分:0)

这实际上很简单,你有几个选择。

  • 创建一个代表名称和年龄的Person对象,该对象也是Comparable。将您的数据读入此实体并将其存储在List中。然后,使用Collections.sort()对列表进行排序。如果要根据其他字段进行排序,可以为排序方法提供自定义Comparator

    public Person implements Comparable<Person> {
        private final String name;
        private final int age;
    
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
        // getters
    
        @Override
        public int compareTo(Person another) {
            return this.name.compareTo(another.getName());
        }
    }
    
  • 创建TreeMap<String, Integer>个条目。阅读它们,然后您可以通过提供custom Comparator来确定它们的打印顺序。