奇怪的结果文件

时间:2013-11-20 01:50:30

标签: java arraylist

我有一个程序可以读取两个文件(“incompleta.txt”和“completa.txt”)并比较两个文件中是否有相同的名称。以下是它的工作原理:

  1. 它将“completa.txt”中的所有名称存储在ArrayList;
  2. 读取“incompleta.txt”文件,并将每行与ArrayList进行比较,如果匹配,则从ArrayList中删除该条目;
  3. 将ArrayList写入文本文件(“lista.txt”)。
  4. 问题是我的“lista.txt”如下所示:Image

    第二行令人困惑和扭曲。

    我的Java代码:

    private static final List<Character> lista = new ArrayList<>();
    
    public static void main(String[] args) throws FileNotFoundException, IOException {
        try (Reader reader = new InputStreamReader(new FileInputStream("completa.txt"), "UTF-8")) {
            int data = reader.read();
            while (data != -1) {
                char theChar = (char) data;
                data = reader.read();
                lista.add(theChar);
            }
    
            reader.close();
        }
    
        try (Reader reader = new InputStreamReader(new FileInputStream("incompleta.txt"), "UTF-8")) {
            int data = reader.read();
            while (data != -1) {
                char theChar = (char) data;
                data = reader.read();
    
                if (lista.contains(theChar)) {
                    lista.remove(theChar);
                }
            }
    
            reader.close();
        }
    
        try (Writer writer = new OutputStreamWriter(new FileOutputStream("lista.txt"), "UTF-8")) {
            for (int i = 0; i < lista.size(); i++) {
                writer.append(lista.get(i));
            }
    
            writer.close();
        }
    
        System.out.println("\n[AVISO] LISTA GERADA COM SUCESSO!\n");
    }
    

2 个答案:

答案 0 :(得分:1)

您拥有的是从第一个文件构建的字符列表。不是字符串列表。

然后根据第二个文件删除一些单独的字符。这留下了一些看起来很滑稽的话;你收到了丢失的信件。然后在最后,你打印所有这些。你的输出正是我所期望的。

答案 1 :(得分:0)

autobox功能不是对称的。添加'd'包含在Character对象中。 删除后,没有autobox。删除('d')更改为删除(100)。 将对象放入remove(新角色('d'))