「java如何存多个对象」java一次性创建多个对象

博主:adminadmin 2022-12-24 13:09:06 63

本篇文章给大家谈谈java如何存多个对象,以及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一次性创建多个对象的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-24,除非注明,否则均为首码项目网原创文章,转载请注明出处。