我仍处于开发此代码的过程中,并且我希望以有效且紧凑的方式实现此目的,因为我打算将其嵌入单独的Java代码中。我也愿意接受其他方法的想法,尽管我更喜欢HashMap或ArrayList方法

我有一个正在使用的文件,看起来像这样:

053 100% BRAN       A0 B1 C01 E0
054 100% NATURAL    A0 B1 C01 E0 F0 G0


该代码的最终产品必须看起来像

053 016% BRAN       A0
053 100% BRAN       B1
053 100% BRAN       C01
053 100% BRAN       E0
054 100% NATURAL    A0
054 100% NATURAL    B1
054 100% NATURAL    C01
054 100% NATURAL    E0
054 100% NATURAL    F0
054 100% NATURAL    G0


请注意,该文件非常大。所有列都是制表符分隔的,最后一列是空格分隔的元素。

编辑:对不起,我应该更好地设计问题。我在考虑集合,因为这样做之后,我需要能够使用不同的键(第一列的重复值)访问所有行。

最佳答案

如果该模式是固定的,则可以使用RegEx完成。 get();将每一行作为输入,并返回该输入字符串的所有组合的列表

public static void main(String[] args) {

    String input="053 100% BRAN       A0 B1 C01 E0";

    System.out.println(get(input));

}

public static List<String> get(String input){

    List<String> list = new ArrayList<String>();

    String regEx="((?:\\d*)\\s(?:\\d*)%\\s(?:[A-Z]*))([\\s]*)([\\sA-Z0-9]*)";
    Matcher matcher = Pattern.compile(regEx).matcher(input);

    String firstHalf="";
    String codes="";
    if(matcher.matches()) {
        firstHalf=matcher.group(1)+matcher.group(2);
        codes=matcher.group(3);
    }

    for (String code : codes.split("\\s")) {
        list.add(firstHalf+code);
    }


    return list;

}

08-07 03:15