Domino 9 und frühere Versionen > ND8: Entwicklung
ArrayList in LS
oxyd21:
Hallo,
in Java u.ä. gibt es die ArrayList. In diesem Datentyp kann ich Objekte anfügen, wieder rauslöschen usw.
In Lotusscript hab ich irgendwie Probleme, mein derzeitiges Problem umzusetzen. Ich möchte Objekte in einem Array speichern und dieses auch wieder entfernen. Dazu wäre wie gesagt die ArrayList ganz gut, da sie Vorteile von Beiden vereint. In LS steh ich da auf dem Schlauch, da beide Strukturen mit Objekten von Haus aus etwas eingeschränkt sind (if Object1 = Object2).
Gibt's ne möglichkeit ein Add, IndexOf oder Remove nachzubilden.
VG, Michael
Peter Klett:
Wie wäre es mit Listen?
Dim meinContainer List As Variant
Da kannst Du alles reinpacken und auch wieder entfernen. Ansprechbar ist jedes Element über einen Namen.
z.B.
Set meinContainer ("MeineDatenbank") = db
Print meinContainer ("MeineDatenbank").Title
Erase meinContainer ("MeineDatenbank")
If IsElement (meinContainer ("MeineDatenbank")) Then
...
End If
meinContainer ("einfacherText") = "Das ist nur ein Text"
Print meinContainer ("einfacherText")
usw.
Natürlich kannst Du Listen auch genauer spezifizieren
Dim meineDatenbanken List As NotesDatabase
Dim meineDokumente List As NotesDocument
Dim meineTexte List As String
ata:
@Peter,
das ist grundsätzlich richtig - in Listen kann man alles mögliche packen, auch NotesObjekte. Es kam aber nach meiner Erfahrung vor, daß man damit einen Server in die Knie zwingen konnte, wenn die Instanzen eine gewisse Zahl überschritten - ich habe ca. 15.000 Instanzen im Kopf, die sich auf dem Server agent-übergreifend addieren können. Von daher muß man bei der Verwendung mit Objekten etwas vorsichtig sein. Keinerlei Probleme hat man mit Strings oder anderen Datentypen. Da sind die Listen irre schnell und haben ansonsten kein Limit wie Arrays...
Zwischendurch hatte ich mal eine Notiz, daß es in den neuen Versionen behoben wäre, validiert hatte ich es aber noch nicht - also habe ich es immer noch im Hinterkopf, wenn ich damit arbeite... ;)
Toni
flaite:
Notes Listen entsprechen den Datentypen von java.util. Map.
ArrayList würd eher Redimensionierbare Arrays entsprechen.
Lotus Script:
// deklarieren von variablen array
dim myList as String()
Dim i as Integer
REM Sachen in Liste tun:
redim preserve myList(0)
myList(0) = "hallo"
redimPreserve myList(1)
myList(1) = "welt"
Rem Lesen aus Liste
for i = 0 to ubound(myList)
msgbox "Element "+ i + " von myList:" + myList(i)
end for
JAVA
// deklarieren von liste
List <String> myList = new ArrayList<String>();
// sachen tun in liste
myList.add("hallo");
myList.add("Welt");
// lesen aus liste:
int i = 0;
for (String aMember : myList) {
logger.debug("Element " + i + " von myList:" + aMember);
i++;
}
pram:
@ata ich kann bestätigen, dass ein Client ca. 8000 NotesDocument-Objekte und ein Server ca 10000 in einem Array/Liste verwalten kann, dann gehen die Document-Handles aus.
Andere Objekte (Instanzen eigener Klassen) kann man um einiges mehr anlegen, wir haben eine ArrayList wie du sie von Java kennst in unser Framework implementiert:
http://www.foconis-object-framework.de/lsdoc/HFIK-6UAJZ7_%2885A7E3333558450B2BB29A5ADE3A3D37%29.html
Gruß
Roland
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln