如何在 java 中自动递增 ID
How to Auto increment an ID in java
我想在添加朋友时自动增加 ID。我以某种方式得到了 ID (1,2,3,3,3..)
的输出
我下面的 Freunde
class 代码是
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Freunde {
private static int idCache = 1;
private final int id;
public String Name; //Datenfeld Name
public String Vorname; //Datenfeld Vorname
public String Geburtsdatum; //Datenfeld Geburtsdatum
public String Telefon; //Datenfeld Telefon
public String Handy; //Datenfeld Handy
public String Email; //Datenfeld E-Mail
public String Adresse; //Datenfeld Adresse
@Override
public String toString() {
return "Freunde{" +
+ id +
", '" + Name + '\'' +
", '" + Vorname + '\'' +
", '" + Telefon + '\'' +
", '" + Geburtsdatum + '\'' +
", '" + Handy + '\'' +
", '" + Email + '\'' +
", '" + Adresse + '\'' +
'}';
}
public ArrayList<Object> Kontakt = new ArrayList<Object>();
public ArrayList<Object> Kontakt()
{
return Kontakt;
}
Iterator<Object> input = Kontakt.iterator();
/**************** Starting of set methods ************************/
public void setVorname(String Vorname) {
this.Vorname=Vorname;
}
public void setName(String Name) {
this.Name=Name;
}
public void setGeburtsdatum(String Geburtsdatum) {
this.Geburtsdatum=Geburtsdatum;
}
public void setTelefon(String Telefon) {
this.Telefon=Telefon;
}
public void setHandy(String Handy) {
this.Handy=Handy;
}
public void setEmail(String Email) {
this.Email=Email;
}
public void setAdresse(String Adresse) {
this.Adresse=Adresse;
}
public Freunde() {
this.id = idCache;
idCache++;
}
public void setKontakt (ArrayList<Object> Kontakt) {
this.Kontakt=Kontakt;
}
/****************End of set methods************************/
/****************Starting of get methods************************/
public String getName() {
return Name;
}
public String getTelefon() {
return Telefon;
}
public String getHandy() {
return Handy;
}
public String getVorname() {
return Vorname;
}
public String getEmail() {
return Email;
}
public String getGeburtsdatum() {
return Geburtsdatum;
}
public String getAdresse() {
return Adresse;
}
public ArrayList<Object> getKontakt() {
return Kontakt;
}
/****************End of get methods************************/
/****************add a friend method************************/
public void anlegen() {
Kontakt.add(id);
Kontakt.add(Vorname);
Kontakt.add(Name);
Kontakt.add(Geburtsdatum);
Kontakt.add(Handy);
Kontakt.add(Telefon);
Kontakt.add(Email);
Kontakt.add(Adresse);
}
/****************remove a friend method************************/
public void löschen(){
// Kontakt.remove(Id);
Kontakt.remove(Vorname);
Kontakt.remove(Name);
Kontakt.remove(Geburtsdatum);
Kontakt.remove(Handy);
Kontakt.remove(Telefon);
Kontakt.remove(Email);
Kontakt.remove(Adresse);
}
/****************change a friend method************************/
public void ändern()
{
// Kontakt.set(0, "Id");
Kontakt.set(0, Vorname);
Kontakt.set(1, Name);
Kontakt.set(2, Geburtsdatum);
Kontakt.set(3, Handy);
Kontakt.set(4, Telefon);
Kontakt.set(5, Email);
Kontakt.set(6, Adresse);
}
/****************End of array methods************************/
/**************** Durchsuche alles nach Name
* @return *********************/
public boolean suche(String Name) {
for (int i = 0; i < Kontakt.size(); i++) {
if (Kontakt.get(i).equals(Name)) {
System.out.println("element found:"+ Kontakt.get(i).equals(Name));
}
}
return false;
}
public boolean contains(String bornlist) {
return false;
// TODO Auto-generated method stub
}
public static int size() {
// TODO Auto-generated method stub
return 0;
}
public int get(int i) {
// TODO Auto-generated method stub
return 0;
}
public void contains() {
// TODO Auto-generated method stub
}
public void setKontakt(Integer Id, String vorname, String name, String geburtsdatum, String telefon, String handy, String email, String adresse)
{
setVorname(vorname);
setName(name);
setGeburtsdatum(geburtsdatum);
setTelefon(telefon);
setHandy(handy);
setEmail(email);
setAdresse(adresse);
}//end constructor for friend
public void setKontakt(String vorname2, String name2) {
// TODO Auto-generated method stub
}
public static Iterator<String> iterator() {
// TODO Auto-generated method stub
return null;
}
}
我在数组列表中得到的输出为
朋友名单
Kontakt:Freunde{1, 'Müller', 'Thomas', '0100', '15/08/1992', '018649', 'thomas.mueller@gmx.de', 'Friee 7, 14455 Berg, Deutschland'},
Kontakt:Freunde{2, 'Müller', 'Andrea', '01700', '15/01/1998', '017849', 'andrea.mueller@gmx.de', 'Im Hafen 9, 18500 Rheinsberg, Deutschland'},
现在,如果我使用选项 2 添加朋友,则会添加一个朋友列表,但 ID 始终保持不变,即使我将 ID 递增为 idCache++
。
**[3, Anush, dmawd, dwalkndw, dwwkad, dwaklndaw, dwakdnaw, dawiiha, 3, mda, fsefjfk, awdjoaw, dawjamd, dawojda, dawmoaöd, dawödöaw]**
选择添加好友或删除好友的选项class如下所示。
import java.util.Iterator;
import java.util.ListIterator;
import java.util.Scanner;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.lang.reflect.Constructor;
import java.util.Random;
public class Karteiprogramm {
// private static Integer id;
private static Scanner input;
private static int selection;
/**************** Start of Menu method ************************/
public void menu() {
System.out.println("\nNummer der Auswahl eingeben: ");
System.out.println("[1] Alle Freunde anzeigen");
System.out.println("[2] Freund anlegen");
System.out.println("[3] Freund löschen");
System.out.println("[4] Freund bearbeiten");
System.out.println("[5] Freund suchen");
System.out.println("[0] Programm beenden");
}
/**************** End of menu method ************************/
/**************** Start of selection method ************************/
/****************
* Start of Mainprogram
*
* @throws IOException
***************************/
public static void main(String[] args) throws IOException {
/**************** Freunde Beispiele ************************/
// Objekt der Klasse Freund anlegen
// Karteikarte Freund f1;
for (int i = 0; i <= 10; i++) {
Freunde f1 = new Freunde();
f1.setVorname("Thomas");
f1.setName("Müller");
f1.setGeburtsdatum("15/01/1992");
f1.setTelefon("01726494800");
f1.setHandy("01879845649");
f1.setEmail("thomas.mueller@gmx.de");
f1.setAdresse("Friedenstraße 7, 14455 Berg, Deutschland");
// Karteikarte Freund f2;
Freunde f2 = new Freunde();
f2.setVorname("Andrea");
f2.setName("Müller");
f2.setGeburtsdatum("15/01/1998");
f2.setTelefon("0177595200");
f2.setHandy("01764591849");
f2.setEmail("andrea.mueller@gmx.de");
f2.setAdresse("Im Hafen 9, 18500 Rheinsberg, Deutschland");
/**************** Ende Freunde Beispiele ************************/
Freunde bornList = new Freunde(); // Kartei für neuen Freund
// Freunde removeList = new Freunde ();
Scanner input = new Scanner(System.in); // Scanner für Tastatureingabe
Karteiprogramm Start = new Karteiprogramm(); // neues Objekt vom Typ Karteiprogramm
Start.menü(); // Aufruf der Methode menü()
Kartei Eingabe = new Kartei();
int selection = input.nextInt(); // Scanner für Tastatureingabe für Integer
/* Kartei[] data = new Kartei [1]; */
while (selection != 0) {
int nummer = 0;
if (selection == 1) {
for (int j = 0; j < 1; j++) {
System.out.println("Liste der Freunde");
/* Eingabe.addLists(); */
System.out.println("Kontakt:" + f1 + ",");
System.out.println("Kontakt:" + f2 + ",");
for (int i1 = 0; i1 < 1; i1++) {
System.out.println(bornList.Kontakt);
}
// System.out.println (bornList.Kontakt);
System.out.println("Taste drücken, um zum Menu zurückzukehren");
System.in.read();
Start.menü();
selection = input.nextInt();
}
Integer id = null;
// int id = f1.getId();
if (selection == 2) { // Anlegen
System.out.println("Kontaktdaten");
System.out.println("---------------------");
System.out.printf("Vorname: ");
input = new Scanner(System.in);
String vorname = input.next();
System.out.printf("Nachname: ");
String name = input.next();
System.out.printf("Geburtstag: ");
String geburtsdatum = input.next();
System.out.printf("Festnetz: ");
String telefon = input.next();
System.out.printf("Handy: ");
String handy = input.next();
System.out.printf("Email: ");
String email = input.next();
System.out.printf("Adresse: ");
String adresse = input.next();
bornList.setKontakt(id, vorname, name, geburtsdatum, telefon, handy, email, adresse); // sets the values
// for friend
bornList.anlegen(); // adds the friend to the array list
System.out.println("Taste drücken, um zum Menu zurückzukehren");
System.in.read();
Start.menü();
selection = input.nextInt();
}
if (selection == 3) { // Löschen
System.out.println("Welcher Freund soll gelöscht werden?");
System.out.println("---------------------");
System.out.printf("Vorname: ");
input = new Scanner(System.in);
String Vorname = input.next();
System.out.printf("Nachname: ");
String Name = input.next();
bornList.setKontakt(Vorname, Name); // sets up the friend to remove
bornList.löschen(); // removes the friend from the array list
System.out.println("Taste drücken, um zum Menu zurückzukehren");
System.in.read();
Start.menü();
selection = input.nextInt();
}
if (selection == 4) { // Ändern
System.out.println("Welcher Freund soll geändert werden?");
System.out.println("---------------------");
System.out.printf("Vorname: ");
input = new Scanner(System.in);
String vorname = input.next();
System.out.printf("Nachname: ");
String name = input.next();
bornList.setKontakt(vorname, name); // sets the values for friend*/
System.out.println("---------------------");
System.out.printf("Vorname: ");
input = new Scanner(System.in);
String vorname2 = input.next();
System.out.printf("Nachname: ");
String name2 = input.next();
System.out.printf("Geburtstag: ");
String geburtsdatum = input.next();
System.out.printf("Festnetz: ");
String telefon = input.next();
System.out.printf("Handy: ");
String handy = input.next();
System.out.printf("Email: ");
String email = input.next();
System.out.printf("Adresse: ");
String adresse = input.next();
bornList.setKontakt(id,vorname2, name2, geburtsdatum, telefon,handy, email, adresse);
bornList.ändern(); // adds the friend to the array list
System.out.println("Taste drücken, um zum Menu zurückzukehren");
System.in.read();
Start.menü();
selection = input.nextInt();
}
if (selection == 5) { // suchen
System.out.println("Welcher Name wird gesucht?");
System.out.println("---------------------");
System.out.printf("Vorname: ");
input = new Scanner(System.in);
String Name = input.next();
if(bornList.suche(Name)) {
System.out.println("Name found");
}
for (int k = 0; k < 1; k++) {
System.out.println(bornList.Kontakt);
}
System.out.println("Taste drücken, um zum Menu zurückzukehren");
System.in.read();
Start.menü();
selection = input.nextInt();
}
}
}
}
}
}
与public void setKontakt(...)
或/*add a friend method**/
有关吗?请帮忙。
每次使用 new Freunde()
都会获得新的 ID。
在你的主程序中,你有
Freunde f1 = new Freunde();
...
Freunde f2 = new Freunde();
...
Freunde bornList = new Freunde();
这就是您获得 [1,2,3,3,3,...] 的原因
在我看来你应该有这样的东西:
而不是 Freunde bornList = new Freunde();
应该是 List<Freunde> bornList = new ArrayList<>();
和
反而
bornList.setKontakt(id, vorname, name, geburtsdatum, telefon, handy, email, adresse);
应该是
Freunde born = new Freunde();
born.setKontakt(id, vorname, name, geburtsdatum, telefon, handy, email, adresse);
bornList.add(born);
显示和删除应该通过这样的事情来完成:
Freunde freunde = bornList.stream().filter(freunde -> freunde .getId()== searchId).findAny().orElse(null);
现在通过 bornList.delete(freunde);
显示 freunde 或删除 freunde
一些约定:class一般是单数 Freunde = Friends,但你只有一个朋友。列表是复数形式 Kontakt = contact。然后是一个非德国特色:
字段和方法名称以小写字母开头。
public class Freund {
private final int id;
private String name; //Datenfeld Name
...
private final List<Freund> kontakte = new ArrayList<>();
public List<Freund> kontakte() { // Do you need this?
return kontakte;
}
public void addKontakt(Freund kontakt) {
kontakte.add(kontakt);
}
public Freund getKontaktById(int id) {
return kontakte.stream().anyMatch(k -> k.id == id).orElse(null);
}
public Freund getKontaktByNamen(String vorname, String name) {
return kontakte.stream()
.anyMatch(k -> k.vorname.equals(vorname) && k.name.equals(name))
.orElse(null);
}
应该只对 new
使用具体的 class ArrayList
。在其他地方使用更通用的界面是值得的 List
。这样的方法更强大,以后可以改实现。
我使用AtomicInteger 作为自增ID,比较安全。 Freunde 对象可以有自己的 freundes (kontakts) 列表。
import java.util.concurrent.atomic.AtomicInteger;
import java.util.ArrayList;
public class Freunde {
private static final AtomicInteger _ID = new AtomicInteger(0);
private final int id;
private String name;
private String vorname;
private String geburtsdatum;
private String telefon;
private String handy;
private String email;
private String adresse;
// Friends of THIS friend
private ArrayList<Freunde> kontakts = new ArrayList<Freunde>();
public Freunde(String name, String vorname, String geburtsdatum, String telefon, String handy, String email, String adresse){
this.id = _ID.incrementAndGet();
this.name = name;
this.vorname = vorname;
this.geburtsdatum = geburtsdatum;
this.telefon = telefon;
this.handy = handy;
this.email = email;
this.adresse = adresse;
}
public addFriend(Freunde f){
kontakts.add(f);
}
// Add your get/set methods here
public String toString() {
return "Freunde{" +
+ id +
", '" + name + '\'' +
", '" + vorname + '\'' +
", '" + telefon + '\'' +
", '" + geburtsdatum + '\'' +
", '" + handy + '\'' +
", '" + email + '\'' +
", '" + adresse + '\'' +
'}';
}
public static void main(String []args){
ArrayList<Freunde> kontakts = new ArrayList<Freunde>();
for(int i=0;i<9;i++){
Freunde f = new Freunde("Thomas", "Müller", "15/01/1992", "01726494800", "01879845649", "thomas.mueller@gmx.de", "Friedenstraße 7, 14455 Berg, Deutschland");
kontakts.add(f);
}
System.out.println(kontakts);
}
}
使用 Freunde 对象,您可以使用 remove 方法将它们从 kontackts ArrayList 中删除。如果您想根据 ID 删除它们,您可以像这样扩展 ArrayList:
public class Kontakts extends ArrayList<Freunde>{
public void removeFriend(int friendId){
Iterator<Freunde> iter = this.iterator();
while (iter.hasNext()) {
Freunde f = iter.next();
if (f.getId() == friendId){
this.remove(f);
break;
}
}
}
}
如果您打算经常通过 ID 查找朋友,您可以使用 HashMap 而不是 ArrayList。
我想在添加朋友时自动增加 ID。我以某种方式得到了 ID (1,2,3,3,3..)
的输出我下面的 Freunde
class 代码是
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Freunde {
private static int idCache = 1;
private final int id;
public String Name; //Datenfeld Name
public String Vorname; //Datenfeld Vorname
public String Geburtsdatum; //Datenfeld Geburtsdatum
public String Telefon; //Datenfeld Telefon
public String Handy; //Datenfeld Handy
public String Email; //Datenfeld E-Mail
public String Adresse; //Datenfeld Adresse
@Override
public String toString() {
return "Freunde{" +
+ id +
", '" + Name + '\'' +
", '" + Vorname + '\'' +
", '" + Telefon + '\'' +
", '" + Geburtsdatum + '\'' +
", '" + Handy + '\'' +
", '" + Email + '\'' +
", '" + Adresse + '\'' +
'}';
}
public ArrayList<Object> Kontakt = new ArrayList<Object>();
public ArrayList<Object> Kontakt()
{
return Kontakt;
}
Iterator<Object> input = Kontakt.iterator();
/**************** Starting of set methods ************************/
public void setVorname(String Vorname) {
this.Vorname=Vorname;
}
public void setName(String Name) {
this.Name=Name;
}
public void setGeburtsdatum(String Geburtsdatum) {
this.Geburtsdatum=Geburtsdatum;
}
public void setTelefon(String Telefon) {
this.Telefon=Telefon;
}
public void setHandy(String Handy) {
this.Handy=Handy;
}
public void setEmail(String Email) {
this.Email=Email;
}
public void setAdresse(String Adresse) {
this.Adresse=Adresse;
}
public Freunde() {
this.id = idCache;
idCache++;
}
public void setKontakt (ArrayList<Object> Kontakt) {
this.Kontakt=Kontakt;
}
/****************End of set methods************************/
/****************Starting of get methods************************/
public String getName() {
return Name;
}
public String getTelefon() {
return Telefon;
}
public String getHandy() {
return Handy;
}
public String getVorname() {
return Vorname;
}
public String getEmail() {
return Email;
}
public String getGeburtsdatum() {
return Geburtsdatum;
}
public String getAdresse() {
return Adresse;
}
public ArrayList<Object> getKontakt() {
return Kontakt;
}
/****************End of get methods************************/
/****************add a friend method************************/
public void anlegen() {
Kontakt.add(id);
Kontakt.add(Vorname);
Kontakt.add(Name);
Kontakt.add(Geburtsdatum);
Kontakt.add(Handy);
Kontakt.add(Telefon);
Kontakt.add(Email);
Kontakt.add(Adresse);
}
/****************remove a friend method************************/
public void löschen(){
// Kontakt.remove(Id);
Kontakt.remove(Vorname);
Kontakt.remove(Name);
Kontakt.remove(Geburtsdatum);
Kontakt.remove(Handy);
Kontakt.remove(Telefon);
Kontakt.remove(Email);
Kontakt.remove(Adresse);
}
/****************change a friend method************************/
public void ändern()
{
// Kontakt.set(0, "Id");
Kontakt.set(0, Vorname);
Kontakt.set(1, Name);
Kontakt.set(2, Geburtsdatum);
Kontakt.set(3, Handy);
Kontakt.set(4, Telefon);
Kontakt.set(5, Email);
Kontakt.set(6, Adresse);
}
/****************End of array methods************************/
/**************** Durchsuche alles nach Name
* @return *********************/
public boolean suche(String Name) {
for (int i = 0; i < Kontakt.size(); i++) {
if (Kontakt.get(i).equals(Name)) {
System.out.println("element found:"+ Kontakt.get(i).equals(Name));
}
}
return false;
}
public boolean contains(String bornlist) {
return false;
// TODO Auto-generated method stub
}
public static int size() {
// TODO Auto-generated method stub
return 0;
}
public int get(int i) {
// TODO Auto-generated method stub
return 0;
}
public void contains() {
// TODO Auto-generated method stub
}
public void setKontakt(Integer Id, String vorname, String name, String geburtsdatum, String telefon, String handy, String email, String adresse)
{
setVorname(vorname);
setName(name);
setGeburtsdatum(geburtsdatum);
setTelefon(telefon);
setHandy(handy);
setEmail(email);
setAdresse(adresse);
}//end constructor for friend
public void setKontakt(String vorname2, String name2) {
// TODO Auto-generated method stub
}
public static Iterator<String> iterator() {
// TODO Auto-generated method stub
return null;
}
}
我在数组列表中得到的输出为
朋友名单
Kontakt:Freunde{1, 'Müller', 'Thomas', '0100', '15/08/1992', '018649', 'thomas.mueller@gmx.de', 'Friee 7, 14455 Berg, Deutschland'},
Kontakt:Freunde{2, 'Müller', 'Andrea', '01700', '15/01/1998', '017849', 'andrea.mueller@gmx.de', 'Im Hafen 9, 18500 Rheinsberg, Deutschland'},
现在,如果我使用选项 2 添加朋友,则会添加一个朋友列表,但 ID 始终保持不变,即使我将 ID 递增为 idCache++
。
**[3, Anush, dmawd, dwalkndw, dwwkad, dwaklndaw, dwakdnaw, dawiiha, 3, mda, fsefjfk, awdjoaw, dawjamd, dawojda, dawmoaöd, dawödöaw]**
选择添加好友或删除好友的选项class如下所示。
import java.util.Iterator;
import java.util.ListIterator;
import java.util.Scanner;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.lang.reflect.Constructor;
import java.util.Random;
public class Karteiprogramm {
// private static Integer id;
private static Scanner input;
private static int selection;
/**************** Start of Menu method ************************/
public void menu() {
System.out.println("\nNummer der Auswahl eingeben: ");
System.out.println("[1] Alle Freunde anzeigen");
System.out.println("[2] Freund anlegen");
System.out.println("[3] Freund löschen");
System.out.println("[4] Freund bearbeiten");
System.out.println("[5] Freund suchen");
System.out.println("[0] Programm beenden");
}
/**************** End of menu method ************************/
/**************** Start of selection method ************************/
/****************
* Start of Mainprogram
*
* @throws IOException
***************************/
public static void main(String[] args) throws IOException {
/**************** Freunde Beispiele ************************/
// Objekt der Klasse Freund anlegen
// Karteikarte Freund f1;
for (int i = 0; i <= 10; i++) {
Freunde f1 = new Freunde();
f1.setVorname("Thomas");
f1.setName("Müller");
f1.setGeburtsdatum("15/01/1992");
f1.setTelefon("01726494800");
f1.setHandy("01879845649");
f1.setEmail("thomas.mueller@gmx.de");
f1.setAdresse("Friedenstraße 7, 14455 Berg, Deutschland");
// Karteikarte Freund f2;
Freunde f2 = new Freunde();
f2.setVorname("Andrea");
f2.setName("Müller");
f2.setGeburtsdatum("15/01/1998");
f2.setTelefon("0177595200");
f2.setHandy("01764591849");
f2.setEmail("andrea.mueller@gmx.de");
f2.setAdresse("Im Hafen 9, 18500 Rheinsberg, Deutschland");
/**************** Ende Freunde Beispiele ************************/
Freunde bornList = new Freunde(); // Kartei für neuen Freund
// Freunde removeList = new Freunde ();
Scanner input = new Scanner(System.in); // Scanner für Tastatureingabe
Karteiprogramm Start = new Karteiprogramm(); // neues Objekt vom Typ Karteiprogramm
Start.menü(); // Aufruf der Methode menü()
Kartei Eingabe = new Kartei();
int selection = input.nextInt(); // Scanner für Tastatureingabe für Integer
/* Kartei[] data = new Kartei [1]; */
while (selection != 0) {
int nummer = 0;
if (selection == 1) {
for (int j = 0; j < 1; j++) {
System.out.println("Liste der Freunde");
/* Eingabe.addLists(); */
System.out.println("Kontakt:" + f1 + ",");
System.out.println("Kontakt:" + f2 + ",");
for (int i1 = 0; i1 < 1; i1++) {
System.out.println(bornList.Kontakt);
}
// System.out.println (bornList.Kontakt);
System.out.println("Taste drücken, um zum Menu zurückzukehren");
System.in.read();
Start.menü();
selection = input.nextInt();
}
Integer id = null;
// int id = f1.getId();
if (selection == 2) { // Anlegen
System.out.println("Kontaktdaten");
System.out.println("---------------------");
System.out.printf("Vorname: ");
input = new Scanner(System.in);
String vorname = input.next();
System.out.printf("Nachname: ");
String name = input.next();
System.out.printf("Geburtstag: ");
String geburtsdatum = input.next();
System.out.printf("Festnetz: ");
String telefon = input.next();
System.out.printf("Handy: ");
String handy = input.next();
System.out.printf("Email: ");
String email = input.next();
System.out.printf("Adresse: ");
String adresse = input.next();
bornList.setKontakt(id, vorname, name, geburtsdatum, telefon, handy, email, adresse); // sets the values
// for friend
bornList.anlegen(); // adds the friend to the array list
System.out.println("Taste drücken, um zum Menu zurückzukehren");
System.in.read();
Start.menü();
selection = input.nextInt();
}
if (selection == 3) { // Löschen
System.out.println("Welcher Freund soll gelöscht werden?");
System.out.println("---------------------");
System.out.printf("Vorname: ");
input = new Scanner(System.in);
String Vorname = input.next();
System.out.printf("Nachname: ");
String Name = input.next();
bornList.setKontakt(Vorname, Name); // sets up the friend to remove
bornList.löschen(); // removes the friend from the array list
System.out.println("Taste drücken, um zum Menu zurückzukehren");
System.in.read();
Start.menü();
selection = input.nextInt();
}
if (selection == 4) { // Ändern
System.out.println("Welcher Freund soll geändert werden?");
System.out.println("---------------------");
System.out.printf("Vorname: ");
input = new Scanner(System.in);
String vorname = input.next();
System.out.printf("Nachname: ");
String name = input.next();
bornList.setKontakt(vorname, name); // sets the values for friend*/
System.out.println("---------------------");
System.out.printf("Vorname: ");
input = new Scanner(System.in);
String vorname2 = input.next();
System.out.printf("Nachname: ");
String name2 = input.next();
System.out.printf("Geburtstag: ");
String geburtsdatum = input.next();
System.out.printf("Festnetz: ");
String telefon = input.next();
System.out.printf("Handy: ");
String handy = input.next();
System.out.printf("Email: ");
String email = input.next();
System.out.printf("Adresse: ");
String adresse = input.next();
bornList.setKontakt(id,vorname2, name2, geburtsdatum, telefon,handy, email, adresse);
bornList.ändern(); // adds the friend to the array list
System.out.println("Taste drücken, um zum Menu zurückzukehren");
System.in.read();
Start.menü();
selection = input.nextInt();
}
if (selection == 5) { // suchen
System.out.println("Welcher Name wird gesucht?");
System.out.println("---------------------");
System.out.printf("Vorname: ");
input = new Scanner(System.in);
String Name = input.next();
if(bornList.suche(Name)) {
System.out.println("Name found");
}
for (int k = 0; k < 1; k++) {
System.out.println(bornList.Kontakt);
}
System.out.println("Taste drücken, um zum Menu zurückzukehren");
System.in.read();
Start.menü();
selection = input.nextInt();
}
}
}
}
}
}
与public void setKontakt(...)
或/*add a friend method**/
有关吗?请帮忙。
每次使用 new Freunde()
都会获得新的 ID。
在你的主程序中,你有
Freunde f1 = new Freunde();
...
Freunde f2 = new Freunde();
...
Freunde bornList = new Freunde();
这就是您获得 [1,2,3,3,3,...] 的原因
在我看来你应该有这样的东西:
而不是 Freunde bornList = new Freunde();
应该是 List<Freunde> bornList = new ArrayList<>();
和
反而
bornList.setKontakt(id, vorname, name, geburtsdatum, telefon, handy, email, adresse);
应该是
Freunde born = new Freunde();
born.setKontakt(id, vorname, name, geburtsdatum, telefon, handy, email, adresse);
bornList.add(born);
显示和删除应该通过这样的事情来完成:
Freunde freunde = bornList.stream().filter(freunde -> freunde .getId()== searchId).findAny().orElse(null);
现在通过 bornList.delete(freunde);
一些约定:class一般是单数 Freunde = Friends,但你只有一个朋友。列表是复数形式 Kontakt = contact。然后是一个非德国特色: 字段和方法名称以小写字母开头。
public class Freund {
private final int id;
private String name; //Datenfeld Name
...
private final List<Freund> kontakte = new ArrayList<>();
public List<Freund> kontakte() { // Do you need this?
return kontakte;
}
public void addKontakt(Freund kontakt) {
kontakte.add(kontakt);
}
public Freund getKontaktById(int id) {
return kontakte.stream().anyMatch(k -> k.id == id).orElse(null);
}
public Freund getKontaktByNamen(String vorname, String name) {
return kontakte.stream()
.anyMatch(k -> k.vorname.equals(vorname) && k.name.equals(name))
.orElse(null);
}
应该只对 new
使用具体的 class ArrayList
。在其他地方使用更通用的界面是值得的 List
。这样的方法更强大,以后可以改实现。
我使用AtomicInteger 作为自增ID,比较安全。 Freunde 对象可以有自己的 freundes (kontakts) 列表。
import java.util.concurrent.atomic.AtomicInteger;
import java.util.ArrayList;
public class Freunde {
private static final AtomicInteger _ID = new AtomicInteger(0);
private final int id;
private String name;
private String vorname;
private String geburtsdatum;
private String telefon;
private String handy;
private String email;
private String adresse;
// Friends of THIS friend
private ArrayList<Freunde> kontakts = new ArrayList<Freunde>();
public Freunde(String name, String vorname, String geburtsdatum, String telefon, String handy, String email, String adresse){
this.id = _ID.incrementAndGet();
this.name = name;
this.vorname = vorname;
this.geburtsdatum = geburtsdatum;
this.telefon = telefon;
this.handy = handy;
this.email = email;
this.adresse = adresse;
}
public addFriend(Freunde f){
kontakts.add(f);
}
// Add your get/set methods here
public String toString() {
return "Freunde{" +
+ id +
", '" + name + '\'' +
", '" + vorname + '\'' +
", '" + telefon + '\'' +
", '" + geburtsdatum + '\'' +
", '" + handy + '\'' +
", '" + email + '\'' +
", '" + adresse + '\'' +
'}';
}
public static void main(String []args){
ArrayList<Freunde> kontakts = new ArrayList<Freunde>();
for(int i=0;i<9;i++){
Freunde f = new Freunde("Thomas", "Müller", "15/01/1992", "01726494800", "01879845649", "thomas.mueller@gmx.de", "Friedenstraße 7, 14455 Berg, Deutschland");
kontakts.add(f);
}
System.out.println(kontakts);
}
}
使用 Freunde 对象,您可以使用 remove 方法将它们从 kontackts ArrayList 中删除。如果您想根据 ID 删除它们,您可以像这样扩展 ArrayList:
public class Kontakts extends ArrayList<Freunde>{
public void removeFriend(int friendId){
Iterator<Freunde> iter = this.iterator();
while (iter.hasNext()) {
Freunde f = iter.next();
if (f.getId() == friendId){
this.remove(f);
break;
}
}
}
}
如果您打算经常通过 ID 查找朋友,您可以使用 HashMap 而不是 ArrayList。