Запись в файл 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);
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет