簡體   English   中英

如何在 java 中自動增加一個 ID

[英]How to Auto increment an ID in java

我想在添加朋友時自動增加一個 ID。 我以某種方式得到一個 output 和 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;
    }

   
    }

我在數組列表中得到 output 作為

朋友名單

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**/有關嗎? 請幫忙。

一些約定: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);
 }

一個人應該使用具體的 class ArrayList只為new的。 在其他地方使用更通用的接口List是值得的。 這種方法更強大,您可以在將來更改實現。

每次你使用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;

我使用 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 object,您可以使用 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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM