「java如何存多个对象」java一次性创建多个对象
本篇文章给大家谈谈java如何存多个对象,以及java一次性创建多个对象对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java中怎样把多个对象存入磁盘中的一个文件.
- 2、java的对象串行化,一个文件只能保存一个对象吧,不能保存多个对象?
- 3、java如何将许多对象存储在一个更大概念的对象里面
- 4、java 用什么集合类型可以同时保存两个对象的?
- 5、java中如何存入多个对象并读取
java中怎样把多个对象存入磁盘中的一个文件.
你要在磁盘上存取一个对象的话,这个对象必须实现Serializable接口
然后通过ObjectOutputStream讲对象写到磁盘中
需要的时候用ObjectIutputStream
java的对象串行化,一个文件只能保存一个对象吧,不能保存多个对象?
实际上是这样的,因为读和写可序列化的对象时使用的是:ObjectOutputStream,和ObjectInputStream类,这两个类的方法对于读取对象使用的方法只有readObject(),这就意味着这能读取 一个对象,这是API写明的东西。
但是,如果你想实现对多多个对象的存取也是可以的。用设计模式里的组合模式噻~或者定义另外管理对象的可序列的化的管理类噻~光说不练假把式,给你写一个简单的组合模式实现的方法~~
类一)
import java.io.Serializable;
class Student implements Serializable {//这是可序列化的类,其中有一个Student ss,就是另外学生类的组合;
int id;
String name;
int age;
Student ss;
public Student(int id, String name, int age, Student ss) {
this.id = id;
this.name = name;
this.age = age;
this.ss = ss;
}
}
类二)//具体的读写类;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class ObjectSer {
public static void main(String[] args) throws IOException,
ClassNotFoundException {
Student s = new Student(1022, "gaowenjian", 12, new Student(1211,
"jiagnyandong", 13, null));
FileOutputStream fo = new FileOutputStream("data.ser");
ObjectOutputStream so = new ObjectOutputStream(fo);
try {
so.writeObject(s);
so.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
s = null;
FileInputStream fi = new FileInputStream("data.ser");
ObjectInputStream si = new ObjectInputStream(fi);
try {
s = (Student) si.readObject();
si.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
System.out.println("Student Info:");
System.out.println("ID :" + s.id);
System.out.println("Name :" + s.name);
System.out.println("Age :" + s.age);
while (s.ss != null) {//此处实现对组合的读取;
s = s.ss;
if (s != null) {
System.out.println("Student's frident Info:");
System.out.println("ID :" + s.id);
System.out.println("Name :" + s.name);
System.out.println("Age :" + s.age);
}
}
}
}
望满意~~
java如何将许多对象存储在一个更大概念的对象里面
这里你采纳与否没关系,给你说说编程与内存的关系。你定义的任何变量,常量,类,方法等等,其实都在内存中,没有所谓的把数据存内存中,这概念,你可以想一下电脑重启或关机后,内存中的所有数据,都会丢失,除非你保存到磁盘中去。在内存中的数据有两块,第一、缓冲,一般写数据到磁盘的时候开辟出来的内存空间;第二、缓存,一般是从磁盘读数据到内存中开辟出来的内存空间。会这么使用,原因很简单,磁盘读写数据速度与内存不一致(磁盘的存取效率远远小于内存的存取效率),为了提高数据的存取效率,才会这么干的。一般而言,java中的所谓数据,大部分都是类,从自动引用计数的概念来分析,你想把对象长久的放在内存中,不会被垃圾回收机制释放,注意制药有一个对象在使用/引用你的数据,这条数据就会存在内存中。所以,想servlet中的全局配置参数,随时可以取到还是唯一一份,你可以参考一下。另外内存使用分堆与栈,堆在面向对象编程中存储对象的,栈是方法或函数执行的时候临时开辟的存储空间,方法或函数执行完毕就会释放。希望我的回复能帮助到你,采纳与否没关系。有更好的答案,我就隐藏我的回复。
java 用什么集合类型可以同时保存两个对象的?
import java.util.HashMap;
import java.util.Map;
/*
* 作为学生来说,是根据学号来区分不同的学生的,那么假设我现在已经知道了学生的学号,我要根据学号去获取学生姓名,请问怎么做呢?
* 如果采用前面讲解过的集合,我们只能把学号和学生姓名作为一个对象的成员,然后存储整个对象,将来遍历的时候,判断,获取对应的名称。
* 但是呢,如果我都能把学生姓名拿出来了,我还需要根据编号去找吗?
* 针对我们目前的这种需求:仅仅知道学号,就想知道学生姓名的情况,Java就提供了一种新的集合 Map。
* 通过查看API,我们知道Map集合的一个最大的特点,就是它可以存储键值对的元素。这个时候存储我们上面的需求,就可以这样做
* 学号1 姓名1
* 学号2 姓名2
* 学号3 姓名3
* 学号2(不行)姓名4
* 学号4 姓名4
* Map集合的特点:
* 将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
*
* Map集合和Collection集合的区别?
* Map集合存储元素是成对出现的,Map集合的键是唯一的,值是可重复的。可以把这个理解为:夫妻对
* Collection集合存储元素是单独出现的,Collection的儿子Set是唯一的,List是可重复的。可以把这个理解为:光棍(11.11)
*
* 注意:
* Map集合的数据结构值针对键有效,跟值无关
* HashMap,TreeMap等会讲。
* Collection集合的数据结构是针对元素有效
*
* Map集合的功能概述:
* 1:添加功能
* V put(K key,V value):添加元素。这个其实还有另一个功能?先不告诉你,等会讲
* 如果键是第一次存储,就直接存储元素,返回null
* 如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值
* 2:删除功能
* void clear():移除所有的键值对元素
* V remove(Object key):根据键删除键值对元素,并把值返回
* 3:判断功能
* boolean containsKey(Object key):判断集合是否包含指定的键
* boolean containsValue(Object value):判断集合是否包含指定的值
* boolean isEmpty():判断集合是否为空
* 4:获取功能
* SetMap.EntryK,V entrySet():???
* V get(Object key):根据键获取值
* SetK keySet():获取集合中所有键的集合
* CollectionV values():获取集合中所有值的集合
* 5:长度功能
* int size():返回集合中的键值对的对数
*/
public class MapDemo {
public static void main(String[] args) {
// 创建集合对象
MapString, String map = new HashMapString, String();
// 添加元素
// V put(K key,V value):添加元素。这个其实还有另一个功能?先不告诉你,等会讲
// System.out.println("put:" + map.put("文章", "马伊俐"));
// System.out.println("put:" + map.put("文章", "姚笛"));
map.put("邓超", "孙俪");
map.put("黄晓明", "杨颖");
map.put("周杰伦", "蔡依林");
map.put("刘恺威", "杨幂");
// void clear():移除所有的键值对元素
// map.clear();
// V remove(Object key):根据键删除键值对元素,并把值返回
// System.out.println("remove:" + map.remove("黄晓明"));
// System.out.println("remove:" + map.remove("黄晓波"));
// boolean containsKey(Object key):判断集合是否包含指定的键
// System.out.println("containsKey:" + map.containsKey("黄晓明"));
// System.out.println("containsKey:" + map.containsKey("黄晓波"));
// boolean isEmpty():判断集合是否为空
// System.out.println("isEmpty:"+map.isEmpty());
//int size():返回集合中的键值对的对数
System.out.println("size:"+map.size());
// 输出集合名称
System.out.println("map:" + map);
}
}
java中如何存入多个对象并读取
public class ArrayListTest {
public static void main(String[] args) {
/*ListString l1 = new ArrayListString();
l1.add("hello");
l1.add("world");
l1.add("hello");
System.out.println(l1);
System.out.println(l1.get(1));
//循环遍历
for(int i = 0; i l1.size(); i++){
System.out.println(l1.get(i));
}*/
ListEmployee l2 = new ArrayListEmployee();
Employee e1 = new Employee(7369, "scott", 800);
Employee e2 = new Employee(1122, "alean", 2000);
Employee e3 = new Employee(1133, "smith", 1000);
Employee e4 = new Employee(1144, "james", 600);
l2.add(e1);
l2.add(e2);
l2.add(e3);
l2.add(e4);
//自然排序
Collections.sort(l2);
for(Employee e: l2){
System.out.println(e.getName() + ": " + e.getEmpno() +":" + e.getSalary());
}
}//给分吧,嘿嘿
关于java如何存多个对象和java一次性创建多个对象的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-24,除非注明,否则均为
原创文章,转载请注明出处。