Heim  >  Artikel  >  Wie erstelle ich einen bestimmten Bereich 11-stelliger Seriennummern?

Wie erstelle ich einen bestimmten Bereich 11-stelliger Seriennummern?

王林
王林nach vorne
2024-02-12 14:27:05754Durchsuche

Frageninhalt

Ich verwende den angegebenen Code, um Seriennummern in einer Listenansicht bis zu einem bestimmten Bereich von 11 Ziffern zu generieren. Bis zu zehn Ziffern ist die generierte Reihenfolge wie 0333624140 bis 0333624160 (z. B. 0333624140,0333624141,0333624142,0333624143 usw.), aber wenn wir den gewünschten Wert auf 11 Ziffern ändern, z. B. 03336241441 bis 03336241 450 Dann stürzt die App ab.

btngenerate.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        int value1;
        int value2;
        value1 = Integer.parseInt(txtfirst.getText().toString());
        value2 = Integer.parseInt(txtsecond.getText().toString());
        for(int i=value1;i<=value2;i++){
            list.add(""+i);
            li.setAdapter(arrayAdapter);
        }

    }
});

Lösung

Ich habe die Lösung, die ich brauchte, alleine und mit der Hilfe aller herausgefunden. Ich zeige es hier, damit andere Informationen darüber erhalten können. Wie auch immer, ich danke Ihnen von ganzem Herzen~

btngenerate.setOnClickListener(new View.OnClickListener() {
    @SuppressLint("DefaultLocale")
    @Override
    public void onClick(View view) {
        try {
            long value1;
            long value2;
            value1 = Long.parseLong(txtfirst.getText().toString());
            value2 = Long.parseLong(txtsecond.getText().toString());

            for(Long i = (Long) value1; i<=value2; i++) {
                list.add(String.format("%011d", i));
                li.setAdapter(arrayAdapter);
            }

        } catch (NumberFormatException e) {
            e.printStackTrace();
        }
    }
});

Das ist eine völlig kaputte Idee, wie man diesen Code schreibt. Sie erstellen ein Array, das jede Zahl mit 11 Ziffern enthalten kann. Das sind 11 Milliarden Artikel. Selbst wenn jedes Objekt nur 8 Bytes einnimmt (4 für den Wert und 4 für die Referenz. Das wären mehr als das), sind das 88 Milliarden Bytes oder etwa 9,5 GB. Das wird nie in die Erinnerung passen, vorher bist du weit weg.

Es gibt viele Möglichkeiten, dies zu tun. Ihr Adapter benötigt kein Array, das alle darin enthaltenen Elemente enthält, da es sich um einen zusammenhängenden Bereich handelt, er benötigt nur den Start- und Endindex und der Wert jedes Index kann basierend auf dem Startindex und dem Offset berechnet werden. Aber eine Liste aller Werte zu haben, funktioniert nicht.

Das obige ist der detaillierte Inhalt vonWie erstelle ich einen bestimmten Bereich 11-stelliger Seriennummern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen