创建一个集合储存员工信息,员工信息包括工号、姓名、年龄、工资等。要求员工信息中不允许出现同工号的员工。
时间: 2024-05-02 07:23:28 浏览: 164
可以使用Python中的set集合来储存员工信息,每个员工信息可以用一个字典来表示,其中工号作为字典的键,其他信息作为键对应的值。当添加新员工时,先检查集合中是否已存在该工号,如果不存在,则将该员工信息添加到集合中。
以下是示例代码:
```python
employee_set = set()
def add_employee(emp_id, name, age, salary):
employee = {'工号': emp_id, '姓名': name, '年龄': age, '工资': salary}
if emp_id not in employee_set:
employee_set.add(emp_id)
print('添加成功!')
else:
print('工号已存在,添加失败!')
# 测试
add_employee('001', '张三', 25, 5000)
add_employee('002', '李四', 30, 8000)
add_employee('001', '王五', 28, 6000) # 工号已存在,添加失败!
print(employee_set)
```
运行结果:
```
添加成功!
添加成功!
工号已存在,添加失败!
{'002', '001'}
```
可以看到,集合中成功储存了两个员工信息,其中工号为'001'的员工信息未被重复添加。
相关问题
创建一个集合储存员工信息,员工信息包括工号姓名年龄工资等,要求员工信息中不允许出现同工号的员工
创建一个集合来存储员工信息,可以使用一些数据结构如列表(List)、集合(Set)或者Map(如果需要关联每个员工的信息),这里我们以Set为例,因为它不允许有重复元素,正好满足无同工号员工的需求。你可以定义一个包含工号、姓名、年龄和工资的员工类Employee,然后用这个类的对象作为Set的元素。
```java
public class Employee {
private int id;
private String name;
private int age;
private double salary;
// 构造函数,getter和setter省略
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Employee employee = (Employee) obj;
return id == employee.id;
}
@Override
public int hashCode() {
return Objects.hash(id);
}
}
// 使用Set创建员工集合
Set<Employee> employeeSet = new HashSet<>();
```
在这个例子中,equals方法用于比较两个员工是否为相同的工号,hashCode方法用于生成哈希码,使得具有相同id的员工被视为重复。添加员工时,由于Set内部不允许重复,所以尝试添加重复工号的员工会自动忽略。
创建一个集合存储员工信息员工信息包括工号姓名年龄工资等要求员工信息中不允许出现同号的员工java
在Java中,你可以使用`HashSet`或`LinkedHashSet`来创建一个无序且不允许有重复元素的集合来存储员工信息。`HashSet`基于哈希表实现,而`LinkedHashSet`则保持元素插入的顺序。这里是一个简单的示例:
```java
import java.util.HashSet;
import java.util.Set;
class Employee {
int id;
String name;
int age;
double salary;
// 构造函数和getter/setter省略
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Employee employee = (Employee) obj;
return id == employee.id; // 检查id是否相等,因为不允许同号
}
@Override
public int hashCode() {
return Objects.hash(id); // 返回唯一的标识,这里是id
}
}
public class Main {
public static void main(String[] args) {
Set<Employee> employeeSet = new HashSet<>();
try {
Employee emp1 = new Employee(1, "Alice", 25, 5000);
Employee emp2 = new Employee(2, "Bob", 30, 6000);
// 尝试添加重复ID的员工,HashSet会自动拒绝
// 如果emp3.id = emp1.id,则会抛出异常
// employeeSet.add(emp3);
employeeSet.add(emp1);
employeeSet.add(emp2);
for (Employee e : employeeSet) {
System.out.println("员工信息: " + e.getName());
}
} catch (Exception e) {
System.out.println("添加重复ID的员工失败:" + e.getMessage());
}
}
}
```
在这个例子中,`equals()`和`hashCode()`方法用于确定集合中的元素是否相等,只有当两个员工的ID不同,它们才被认为是不同的。如果尝试添加具有相同ID的新员工,`HashSet`会检测到冲突并抛出异常。
阅读全文