热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

按字母顺序排序java中的输出文件-Alphabeticallysortingoutputfileinjava

Ihaveaprogramthattakesdatafromafile:我有一个从文件中获取数据的程序:IdFirstNameLastName1

I have a program that takes data from a file:

我有一个从文件中获取数据的程序:

Id     First Name   Last Name
1      John         Smith
2      Joe          Blow
3      Cat          Dog

Then takes that data and generates a username and password based on the info given above:

然后获取该数据并根据上面给出的信息生成用户名和密码:

Id     Username    Password
1      SmJo1       w6o3ju2y
2      BlJo2       kv4nbu4a
3      DoCa3       7gpxlaup

Basically what I need done is to get my program to organize the input file in alphabetical order according to last name which would in turn organize my output file in the same order, I have no idea how to go about this though.

基本上我需要做的是让我的程序按照字母顺序按照字母顺序组织输入文件,而后者又按照相同的顺序组织我的输出文件,我不知道如何去做。

4 个解决方案

#1


1  

Assuming you have a Person class as follows:

假设您有一个Person类,如下所示:

public class Person {
   private int id;
   private String firstName;
   private String lastName;

   public int getId() {
       return id;
   }
   public void setId(int id) {
       this.id = id;
   }
   public String getFirstName() {
       return firstName;
   }
   public void setFirstName(String firstName) {
       this.firstName = firstName;
   }
   public String getLastName() {
       return lastName;
   }
   public void setLastName(String lastName) {
       this.lastName = lastName;
   }

   public Person(int id, String firstName, String lastName) {
       super();
       this.id = id;
       this.firstName = firstName;
       this.lastName = lastName;
   }
}

you can sort the list of Person objects using the static sort method of Collections as shown below:

您可以使用Collections的静态排序方法对Person对象列表进行排序,如下所示:

    List persOns= new ArrayList();
    persons.add(new Person(1, "John", "Smith"));
    persons.add(new Person(2, "Joe", "Blow"));
    persons.add(new Person(3, "Cat", "Dog"));

    Collections.sort(persons, new Comparator() {
        public int compare(Person p1, Person p2) {
            String lastName1 = p1.getLastName();
            String lastName2 = p2.getLastName();
            return lastName1.compareTo(lastName2);
        }
    });

#2


0  

You can use a TreeMap in this case where your key can be the lastname and value can be comma separated string of Firstname and ID or your value can be an ArrayList of string where you store the ID and Firstname as strings and later after retrieving convert them.

在这种情况下,您可以使用TreeMap,其中您的键可以是姓氏,值可以是逗号分隔的Firstname和ID字符串,或者您的值可以是字符串的ArrayList,其中您将ID和Firstname存储为字符串,稍后在检索转换它们之后。

The treeMap will automatically store the lastname in sorted order.

treeMap将按排序顺序自动存储姓氏。

#3


0  

Create a Person class

创建一个Person类

public class Person implements Comparable {

   private String firstName;
   private String lastName;
   private String username;
   private String password;

  //do stuff

  public int compareTo(Person p) {
     lastName.compareTo(p.lastName);
  }

  public void writeToFile(FileWriter file) {
   //Implements
 }      

}

After, short the array of elements

之后,缩短元素数组

Collections.sort(persons);

And write the persons in order

并按顺序写下这些人

for (Person p : persons) {
   p.writeToFile(fileWriter);
}

#4


0  

The solutions you'll get here will probably all look fairly similar. Here's mine:

你在这里得到的解决方案看起来可能都非常相似。这是我的:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class User implements Comparable {
    private int id;
    private String firstName;
    private String lastName;

    public User(int id, String firstName, String lastName) {
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public int compareTo(User other) {
        int lastNameComparison = lastName.compareTo(other.lastName);

        return (lastNameComparison != 0 ? lastNameComparison : firstName
                .compareTo(other.firstName));
    }

    @Override
    public String toString() {
        return String.format("%d\t%s\t%s", id, firstName, lastName);
    }

    public static void main(String... args) {
        List users = new ArrayList();
        users.add(new User(1, "John", "Smith"));
        users.add(new User(2, "Joe", "Blow"));
        users.add(new User(3, "Cat", "Dog"));

        Collections.sort(users);

        for(User user : users) {
            System.out.println(user.toString());
        }
    }
}

推荐阅读
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
  • 本题要求在一组数中反复取出两个数相加,并将结果放回数组中,最终求出最小的总加法代价。这是一个经典的哈夫曼编码问题,利用贪心算法可以有效地解决。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • 为了解决不同服务器间共享图片的需求,我们最初考虑建立一个FTP图片服务器。然而,考虑到项目是一个简单的CMS系统,为了简化流程,团队决定探索七牛云存储的解决方案。本文将详细介绍使用七牛云存储的过程和心得。 ... [详细]
  • 由二叉树到贪心算法
    二叉树很重要树是数据结构中的重中之重,尤其以各类二叉树为学习的难点。单就面试而言,在 ... [详细]
  • 深入解析Java多线程与并发库的应用:空中网实习生面试题详解
    本文详细探讨了Java多线程与并发库的高级应用,结合空中网在挑选实习生时的面试题目,深入分析了相关技术要点和实现细节。文章通过具体的代码示例展示了如何使用Semaphore和SynchronousQueue来管理线程同步和任务调度。 ... [详细]
  • 探讨 HDU 1536 题目,即 S-Nim 游戏的博弈策略。通过 SG 函数分析游戏胜负的关键,并介绍如何编程实现解决方案。 ... [详细]
  • 并发编程 12—— 任务取消与关闭 之 shutdownNow 的局限性
    Java并发编程实践目录并发编程01——ThreadLocal并发编程02——ConcurrentHashMap并发编程03——阻塞队列和生产者-消费者模式并发编程04——闭锁Co ... [详细]
  • 本文详细介绍了如何解压并安装MySQL集群压缩包,创建用户和组,初始化数据库,配置环境变量,并启动相关服务。此外,还提供了详细的命令行操作步骤和常见问题的解决方案。 ... [详细]
author-avatar
戴耳机聆听世界
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有