我使用for循环将学生详细信息添加到ArrayList。当我给第二个学生提供详细信息时,它会覆盖第一个数据。螺柱类
import java.util.Scanner;
public class Stud {
private int rollNumber, age;
private String firstName, lastName, gender;
public Stud(int rollNumber, String firstName, String lastName, int age, String gender) {
}
public void setRollnumber(int rollNumber) {
this.rollNumber=rollNumber;
}
public int getRollnumber() {
return rollNumber;
}
public void setFirstname(String firstName) {
this.firstName=firstName;
}
public String getFirstname() {
return firstName;
}
public void setLastname(String lastName) {
this.lastName=lastName;
}
public String getLastname() {
return lastName;
}
public void setAge(int age) {
this.age=age;
}
public int getAge() {
return age;
}
public void setGender(String gender) {
this.gender=gender;
}
public String getGender() {
return gender;
}
}
将数据添加到ArrayList的主类。
import java.util.ArrayList;
import java.util.Scanner;
public class MainClass {
public static void main(String[] args) {
ArrayList<Stud> al=new ArrayList<Stud>();
System.out.println("Enter the details:");
for(int i=1;i<=10;i++) {
int rollNumber;
String firstName;
String lastName;
int age;
String gender;
Scanner in=new Scanner(System.in);
rollNumber=in.nextInt();
firstName=in.next();
lastName=in.next();
age=in.nextInt();
gender=in.next();
Stud s=new Stud(rollNumber, firstName, lastName, age, gender);
al.add(s);
for (Stud stud : al) {
stud.setRollnumber(rollNumber);
System.out.println(stud.getRollnumber());
}
}
}
}
输出:第二个数据[2,2]后的实际输出辊数[1]。预期输出应为卷号: A1姓名: F1 L1性别:男性年龄: 11体育赛事:标枪
报名号:A2姓名:F2 L2性别:女年龄:14体育项目:100米跑
报名号:A3姓名:F3 L3性别:男性年龄:11体育赛事:50米跑资格:否(仅适用于10至12岁的女孩)
根据你的要求,希望这能奏效。它没有问题覆盖以前的记录。使用Iterator类将记录添加到数组列表中。
import java.util.*;
import java.util.ArrayList;
public class ArraLis {
private int rollNumber, age;
private String firstName, lastName, gender,event;
ArraLis(int rollnum, String fname, String lname, int ag, String gend,String even) {
rollNumber=rollnum;
age=ag;
gender=gend;
firstName=fname;
lastName=lname;
event=even;
}
public void setRollnumber(int rollNumber) {
this.rollNumber=rollNumber;
}
public int getRollnumber() {
return rollNumber;
}
public void setFirstname(String firstName) {
this.firstName=firstName;
}
public String getFirstname() {
return firstName;
}
public void setLastname(String lastName) {
this.lastName=lastName;
}
public String getLastname() {
return lastName;
}
public void setAge(int age) {
this.age=age;
}
public int getAge() {
return age;
}
public void setGender(String gender) {
this.gender=gender;
}
public String getGender() {
return gender;
}
public static void main(String args[])
{
Scanner in=new Scanner(System.in);
ArrayList<ArraLis> al=new ArrayList<ArraLis>();
System.out.println("enter the details");
int rollNumber;
String firstName;
String lastName;
int age;
String gender;
String event;
int i;
for(i=0;i<=2;i++)
{
rollNumber=in.nextInt();
firstName=in.next();
lastName=in.next();
age=in.nextInt();
gender=in.next();
event=in.next();
ArraLis a1=new ArraLis(rollNumber, firstName, lastName, age, gender, event);
al.add(a1);
}
Iterator it=al.iterator();
while(it.hasNext())
{
ArraLis ar=(ArraLis)it.next();
System.out.println(ar.rollNumber+" "+ar.firstName+" "+ar.lastName+" "+ar.age+" "+ar.gender+" "+ar.event);
}
}
}
如果能够在Java 8中使用流
类,则可以使用distinct
:
list.stream().distinct().collect(Collectors.toList());
对象的“相等”方法是必不可少的。
这应该是可行的:
public class MainClass {
public static void main(String[] args) {
Set<Stud> al=new HashSet<>(); // use a set
Scanner in=new Scanner(System.in); // init scanner here!
System.out.println("Enter the details:");
for(int i=1;i<=10;i++) {
int rollNumber;
String firstName;
String lastName;
int age;
String gender;
rollNumber=in.nextInt();
firstName=in.next();
lastName=in.next();
age=in.nextInt();
gender=in.next();
Stud s=new Stud(rollNumber, firstName, lastName, age, gender);
al.add(s);
for (Stud stud : al) {
System.out.println(stud.getRollnumber());
}
}
}
private static class Stud {
private final int rollNumber, age;
private final String firstName, lastName;
private final String gender;
// assign the values you get in constructor
public Stud(int rollNumber, String firstName, String lastName, int age, String gender) {
this.rollNumber = rollNumber;
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.gender = gender;
}
public int getRollnumber() {
return this.rollNumber;
}
public String getFirstname() {
return this.firstName;
}
public String getLastname() {
return this.lastName;
}
public int getAge() {
return this.rollNumber;
}
public String getGender() {
return this.gender;
}
// needed for Set
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + this.age;
result = prime * result + ((this.firstName == null) ? 0 : this.firstName.hashCode());
result = prime * result + ((this.gender == null) ? 0 : this.gender.hashCode());
result = prime * result + ((this.lastName == null) ? 0 : this.lastName.hashCode());
result = prime * result + this.rollNumber;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Stud other = (Stud) obj;
if (this.age != other.age)
return false;
if (this.firstName == null) {
if (other.firstName != null)
return false;
} else if (!this.firstName.equals(other.firstName))
return false;
if (this.gender == null) {
if (other.gender != null)
return false;
} else if (!this.gender.equals(other.gender))
return false;
if (this.lastName == null) {
if (other.lastName != null)
return false;
} else if (!this.lastName.equals(other.lastName))
return false;
if (this.rollNumber != other.rollNumber)
return false;
return true;
}
}
}
我有一个简单的项目,该项目将个人信息提供给数据库(sqlite),现在我想避免插入重复值(按名称),我不能做什么?谢谢你们
钱箱类: 商户类: 输入数据: 我的任务 计算每个商家的总金额并返回商家列表 我正在尝试使用Stream API解决这个任务。并编写了以下代码: 结果 但显然,流返回四个对象,而不是所需的两个对象。我意识到,地图(第二行)为每个cashBoxId创建了四个对象。而且我不知道如何通过进行过滤,也不知道如何获得没有重复的结果。
如何避免在PHP MYSQLi中插入重复记录?这是我的剧本:
问题内容: 我正在尝试在两个数据帧之间合并。每个数据帧都有两个索引级别(日期,客户)。在列中,例如,某些列在两者之间匹配(货币,日期)。 按索引合并这些内容的最佳方法是什么,但不要采用两个副本的货币和日期。 每个数据框都是90列,所以我试图避免用手将所有内容写出来。 如果我做: 我懂了 谢谢!… 问题答案: 您可以算出仅在一个DataFrame中的列,并使用它来选择合并中列的子集。 然后执行合并(
创建表(int(10)不为空AUTO_INCREMENT,int(30),varchar(30),varchar(4)不为空,int(2)不为空,主键()); 创建表(varchar(10),主键()); 创建表(int(10),int(30),varchar(30),varchar(4),int(2), varchar(10), varchar(2)not null默认'p'); 分隔符$$ 为
在Java,有没有一种方法可以避免在调用的每个级别上嵌套null检查,以确保沿途没有阻止下一次调用的null。有没有一个优雅的方法来做这件事? 例如: Objone.ObjTwo.ObjTree.ObjFour.ObjF