Java 如何以数组的形式获取响应
代码Java 如何以数组的形式获取响应,java,Java,代码 package-com; 公营雇员{ 私有字符串名称; 私有字符串empId; 公共雇员(字符串名称、字符串empId){ 超级(); this.name=名称; this.empId=empId; } //equals和hashcode } 包装组件; 导入java.util.LinkedHashSet; 导入java.util.Set; 公共类测试人员{ 公共静态void main(字符串[]args){ 员工emp1=新员工(“卢克”,“11”); 员工emp2=新员工(“Luke2
package-com;
公营雇员{
私有字符串名称;
私有字符串empId;
公共雇员(字符串名称、字符串empId){
超级();
this.name=名称;
this.empId=empId;
}
//equals和hashcode
}
包装组件;
导入java.util.LinkedHashSet;
导入java.util.Set;
公共类测试人员{
公共静态void main(字符串[]args){
员工emp1=新员工(“卢克”,“11”);
员工emp2=新员工(“Luke2”,“12”);
Set empSet=new LinkedHashSet();
empSet.add(emp1);
empSet.add(emp2);
对象obj[]=empSet.toArray();
系统输出打印项次(obj);
}
}
打印时,我得到的响应显示为[Ljava.lang.Object;@7852e922
我需要一个雇员数组形式的响应,你能帮助我如何以数组的形式得到这个响应吗
响应需要形成一个Employee数组您需要在
Employee
类中实现一个toString
方法
package com;
public class Employee {
private String name;
private String empId;
public Employee(String name, String empId) {
super();
this.name = name;
this.empId = empId;
}
// equals and hashcode
}
package com;
import java.util.LinkedHashSet;
import java.util.Set;
public class TestEmp {
public static void main(String[] args) {
Employee emp1 = new Employee("Luke", "11");
Employee emp2 = new Employee("Luke2", "12");
Set<Employee> empSet = new LinkedHashSet<>();
empSet.add(emp1);
empSet.add(emp2);
Object obj[] = empSet.toArray();
System.out.println(obj);
}
}
主要
您需要在
Employee
类中实现toString
方法
package com;
public class Employee {
private String name;
private String empId;
public Employee(String name, String empId) {
super();
this.name = name;
this.empId = empId;
}
// equals and hashcode
}
package com;
import java.util.LinkedHashSet;
import java.util.Set;
public class TestEmp {
public static void main(String[] args) {
Employee emp1 = new Employee("Luke", "11");
Employee emp2 = new Employee("Luke2", "12");
Set<Employee> empSet = new LinkedHashSet<>();
empSet.add(emp1);
empSet.add(emp2);
Object obj[] = empSet.toArray();
System.out.println(obj);
}
}
主要
重写Employee类中的toString方法:
[Employee{name='Luke', empId='11'}, Employee{name='Luke2', empId='12'}]
使用Arrays.toString在TestEmp类中打印:
@Override
public String toString() {
return "Employee{" +
"name='" + name + '\'' +
", empId='" + empId + '\'' +
'}';
}
重写Employee类中的toString方法:
[Employee{name='Luke', empId='11'}, Employee{name='Luke2', empId='12'}]
使用Arrays.toString在TestEmp类中打印:
@Override
public String toString() {
return "Employee{" +
"name='" + name + '\'' +
", empId='" + empId + '\'' +
'}';
}
java.lang.Object;@7852e922
是Object obj[]=empSet.toArray()的对象地址
我向您介绍了如何使用反射从对象类获取值,然后将其存储到二维数组中
我的想法不需要覆盖toString()方法,而是将值真正存储到数组中
我想这就是你想要的
导入java.lang.reflect.Field;
导入java.util.array;
导入java.util.LinkedHashSet;
导入java.util.Set;
公共类测试人员{
公共静态void main(字符串[]args)引发IllegalAccessException{
//TODO自动生成的方法存根
员工emp1=新员工(“卢克”,“11”);
员工emp2=新员工(“Luke2”,“12”);
Set empSet=new LinkedHashSet();
empSet.add(emp1);
empSet.add(emp2);
对象obj[]=empSet.toArray();
字段[]fs=Employee.class.getDeclaredFields();
字符串[][]empArray=新字符串[obj.length][fs.length];
for(int i=0;ijava.lang.Object;@7852e922
是Object obj[]=empSet.toArray()的对象地址
我向您介绍了如何使用反射从对象类获取值,然后将其存储到二维数组中
我的想法不需要覆盖toString()方法,而是将值真正存储到数组中
我想这就是你想要的
导入java.lang.reflect.Field;
导入java.util.array;
导入java.util.LinkedHashSet;
导入java.util.Set;
公共类测试人员{
公共静态void main(字符串[]args)引发IllegalAccessException{
//TODO自动生成的方法存根
员工emp1=新员工(“卢克”,“11”);
员工emp2=新员工(“Luke2”,“12”);
Set empSet=new LinkedHashSet();
empSet.add(emp1);
empSet.add(emp2);
对象obj[]=empSet.toArray();
字段[]fs=Employee.class.getDeclaredFields();
字符串[][]empArray=新字符串[obj.length][fs.length];
对于(int i=0;i'Employee[]employees=new employees[1];employees=empSet.toArray(employees);“employees[]employees=new employees[1];employees=empSet.toArray(employees);”也许您应该对toString()使用String.format();
方法功能更强大,可读性更好。在这种情况下,它应该是:返回String.format(“Employee{name='%s',empId='%s'}”,name,empId);
这不是必需的,但更容易理解发生了什么,因为您可以立即看到输出字符串的格式,并且可以轻松地调整变量。此外,您还可以添加格式设置,如%10s
,以便此字符串无论有多少个字符都需要10个字符的空间。也许您应该使用字符串。format()
对于toString()
方法,它的功能更强大,可读性更好。在这种情况下,它应该是:返回String.format(“Employee{name='%s',empId='%s'),name,empId);
这不是必需的,但更容易理解发生了什么,因为您可以立即看到输出字符串的格式,并且可以轻松地调整变量。此外,您还可以添加格式设置,如%10s
,以便此字符串无论有多少个字符,始终占用10个字符的空间
Luke 11
Luke2 12