21xrx.com
2025-06-29 09:52:45 Sunday
登录
文章检索 我的文章 写文章
Java学习笔记:一对多关系的实现
2023-06-16 19:56:28 深夜i     14     0
Java List Map 一对多

在Java编程中,经常会遇到一对多的关系,例如一个班级有多个学生,一个订单有多个商品等等。如何在代码中实现这种一对多的关系呢?本文将介绍使用Java中的List和Map数据结构来实现一对多关系的方法。

List:一对多中的"多"

List是Java中最常见的数据结构之一,表示一组有序的元素集合。在一对多的关系中,我们可以使用List来表示"多"的一方,例如一个班级中有多个学生,我们可以用一个List来存储这些学生。下面是一个简单的Java程序演示如何使用List实现班级学生的管理:

import java.util.ArrayList;
import java.util.List;
public class Classroom {
  // 一个班级有多个学生,使用List来存储学生
  private List
  students = new ArrayList 
  
   ();
  
 
  public void addStudent(Student student) {
   students.add(student);
  }
  public void removeStudent(Student student) {
   students.remove(student);
  }
  public List
  getStudents()
 
   return students;
 
}
public class Student {
  private String name;
  public Student(String name)
   this.name = name;
 
  public String getName()
   return name;
 
  public void setName(String name)
   this.name = name;
 
}
public class Main {
  public static void main(String[] args) {
   // 创建一个班级
   Classroom classroom = new Classroom();
   // 添加学生
   Student student1 = new Student("小明");
   Student student2 = new Student("小红");
   classroom.addStudent(student1);
   classroom.addStudent(student2);
   // 获取学生列表并输出
   List
  students = classroom.getStudents();
 
   for (Student student : students) {
     System.out.println(student.getName());
   }
  }
}

上述程序中,我们创建了一个Classroom类来表示一个班级,其中使用List来存储学生。在Main类中,我们添加了两个学生到班级中,并通过getStudents()方法获取班级学生列表并输出。

Map:一对多中的"一"

Map也是Java中非常常用的数据结构之一,它表示一组键值对集合,其中每个键对应一个值。在一对多的关系中,我们可以使用Map来表示"一"的一方,例如一个订单中有多个商品,我们可以用一个Map来存储这些商品。下面是一个简单的Java程序演示如何使用Map实现订单商品的管理:

import java.util.HashMap;
import java.util.Map;
public class Order {
  // 一个订单有多个商品,使用Map来存储商品
  private Map
  items = new HashMap 
  
   ();
  
 
  public void addItem(Item item) {
   items.put(item.getName(), item);
  }
  public void removeItem(String itemName) {
   items.remove(itemName);
  }
  public Map
  getItems() >
 
   return items;
 
}
public class Item {
  private String name;
  private double price;
  public Item(String name, double price)
   this.name = name;
   this.price = price;
 
  public String getName()
   return name;
 
  public void setName(String name)
   this.name = name;
 
  public double getPrice()
   return price;
 
  public void setPrice(double price)
   this.price = price;
 
}
public class Main {
  public static void main(String[] args) {
   // 创建一个订单
   Order order = new Order();
   // 添加商品
   Item item1 = new Item("苹果", 5.0);
   Item item2 = new Item("香蕉", 3.0);
   order.addItem(item1);
   order.addItem(item2);
   // 获取商品列表并输出
   Map
  items = order.getItems();
 
   for (String itemName : items.keySet()) {
     Item item = items.get(itemName);
     System.out.println(item.getName() + ": " + item.getPrice());
   }
  }
}

上述程序中,我们创建了一个Order类来表示一个订单,其中使用Map来存储商品。在Main类中,我们添加了两个商品到订单中,并通过getItems()方法获取订单商品列表并输出。

  
  

评论区