Запись в файл hashmap

 
 
 
Сообщения:2
Запись файл сделал,но она не корректно работает
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;


public class Test  {
        public static void main(String[] args) throws IOException {
                Map<Test2, Integer>hashmap = new HashMap<>();
                Map<Test2, Integer>hashma3 = new HashMap<>();
                Set<Test2>set = new HashSet<>();
                Test2 person1 = new Test2("Александр",1);
                Test2 person2 = new Test2("Александр",1);
                hashmap.put(person1, 1223);
                hashmap.put(person2, 123);
                
                set.add(person1);
                set.add(person2);
                hashma3.put(person1, 12);
                System.out.println(hashmap);
                System.out.println(set);
                {
                File file = new File("temp.txt");
                FileOutputStream f = new FileOutputStream(file);
                ObjectOutputStream s = new ObjectOutputStream(f);
                s.writeObject(hashmap);
                s.close();
            }
        }
        
}


package Forest;
import java.io.Serializable;
public class Test2 implements Serializable {
        
        private String name;
        private int id;
        
        public Test2 (String name, int id) {
                this.name = name;
                this.id = id;
        }
        public String toString() {
                return "Имя сотрудника "+ name+" ID сотрудика "+ id;
        }
        @Override
        public int hashCode() {
                final int prime = 31;
                int result = 1;
                result = prime * result + id;
                result = prime * result + ((name == null) ? 0 : name.hashCode());
                return result;
        }
        @Override
        public boolean equals(Object obj) {
                if (this == obj)
                        return true;
                if (obj == null)
                        return false;
                if (getClass() != obj.getClass())
                        return false;
                Test2 other = (Test2) obj;
                if (id != other.id)
                        return false;
                if (name == null) {
                        if (other.name != null)
                                return false;
                } else if (!name.equals(other.name))
                        return false;
                return true;
        }
        
}

ошибки не какие не вываливаються, но в файл записываеться какой то ад
типа
Quote:
¬н sr java.util.HashMapЪБГ`С F
loadFactorI [email protected] w sr Forest.Test2[•©2vЖџ I idL namet Ljava/lang/String;xp t Александрsr java.lang.Integerв ¤чЃ‡8 I valuexr java.lang.Number†¬•”а‹ xp {x
Изменен:07 апр 2020 17:59
 
 
Сообщения:1046
во первых код с записью в файл в студию.
во вторых у тебя там неявная конверсия из int в Integer что порядком скажется на результатах.
 
 
Сообщения:2
windruf:
во первых код с записью в файл в студию.
во вторых у тебя там неявная конверсия из int в Integer что порядком скажется на результатах.

добавил))
 
 
Сообщения:10007
Aleks14:
но в файл записываеться какой то ад
А что вообще ожидалось?
 
 
Сообщения:1046
ObjectOutputStream сериализует объект и пишет в файл и это выглядит примерно так, как и у тебя вышло. если хочешь текст - используй
PrintWriter writer = new PrintWriter("the-file-name.txt", "UTF-8");
writer.println("The first line");
writer.println("The second line");
writer.close();

или
List<String> lines = Arrays.asList("The first line", "The second line");
Path file = Paths.get("the-file-name.txt");
Files.write(file, lines, StandardCharsets.UTF_8);
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет