Heim >Java >javaLernprogramm >Java-Klassenbibliothek-Guava-Tabelle
Tabelle
Wenn wir eine Datenstruktur mit mehreren Indizes benötigen, können wir normalerweise nur diese hässliche Karte verwenden
[code]Test public void TableTest(){ Table<String, Integer, String> aTable = HashBasedTable.create(); for (char a = 'A'; a <= 'C'; ++a) { for (Integer b = 1; b <= 3; ++b) { aTable.put(Character.toString(a), b, String.format("%c%d", a, b)); } } System.out.println(aTable.column(2)); System.out.println(aTable.row("B")); System.out.println(aTable.get("B", 2)); System.out.println(aTable.contains("D", 1)); System.out.println(aTable.containsColumn(3)); System.out.println(aTable.containsRow("C")); System.out.println(aTable.columnMap()); System.out.println(aTable.rowMap()); System.out.println(aTable.remove("B", 3)); }
[code]{A=A2, B=B2, C=C2} {1=B1, 2=B2, 3=B3} B2 false true true {1={A=A1, B=B1, C=C1}, 2={A=A2, B=B2, C=C2}, 3={A=A3, B=B3, C=C3}} {A={1=A1, 2=A2, 3=A3}, B={1=B1, 2=B2, 3=B3}, C={1=C1, 2=C2, 3=C3}} B3
Tabellenansicht:
rowMap () gibt ein Map
[code]import com.google.common.collect.ClassToInstanceMap; import com.google.common.collect.HashBasedTable; import com.google.common.collect.MutableClassToInstanceMap; public class OtherTest { @Test public void ClassToInstanceMapTest() { ClassToInstanceMap<String> classToInstanceMapString =MutableClassToInstanceMap.create(); ClassToInstanceMap<Person> classToInstanceMap =MutableClassToInstanceMap.create(); Person person= new Person("peida",20); System.out.println("person name :"+person.name+" age:"+person.age); classToInstanceMapString.put(String.class, "peida"); System.out.println("string:"+classToInstanceMapString.getInstance(String.class)); classToInstanceMap.putInstance(Person.class,person); Person person1=classToInstanceMap.getInstance(Person.class); System.out.println("person1 name :"+person1.name+" age:"+person1.age); } } class Person { public String name; public int age; Person(String name, int age) { this.name = name; this.age = age; } }
RangeSet
zurück. RangeSet wird verwendet, um eine Reihe diskontinuierlicher, nicht leerer Bereiche zu verarbeiten. Beim Hinzufügen eines Bereichs zu einem RangeSet werden alle aufeinanderfolgenden Bereiche automatisch zusammengeführt und leere Bereiche werden automatisch entfernt. Zum Beispiel:
[code] @Test public void RangeSetTest(){ RangeSet<Integer> rangeSet = TreeRangeSet.create(); rangeSet.add(Range.closed(1, 10)); System.out.println("rangeSet:"+rangeSet); rangeSet.add(Range.closedOpen(11, 15)); System.out.println("rangeSet:"+rangeSet); rangeSet.add(Range.open(15, 20)); System.out.println("rangeSet:"+rangeSet); rangeSet.add(Range.openClosed(0, 0)); System.out.println("rangeSet:"+rangeSet); rangeSet.remove(Range.open(5, 10)); System.out.println("rangeSet:"+rangeSet); }
Beachten Sie, dass wir in Fällen wie dem Zusammenführen von Range.closed(1, 10) und Range.closedOpen(11, 15) zuerst die DiscreteDomain übergeben müssen, indem wir Range.canonical(DiscreteDomain) aufrufen ) .integers() kümmert sich darum.
Ansichten von RangeSet
Die Implementierung von RangeSet unterstützt eine sehr umfangreiche Ansicht, einschließlich:
Komplement(): Es handelt sich um ein Hilfs-RangeSet, das selbst ein RangeSet ist, weil es Enthält nicht kontinuierliche, nicht leere Bereiche.
subRangeSet(Range): Gibt eine Schnittpunktansicht zurück.
asRanges(): Gibt einen Satz zurück, der iteriert werden kann
[code] @Test public void RangeMapTest(){ RangeMap<Integer, String> rangeMap = TreeRangeMap.create(); rangeMap.put(Range.closed(1, 10), "foo"); System.out.println("rangeMap:"+rangeMap); rangeMap.put(Range.open(3, 6), "bar"); System.out.println("rangeMap:"+rangeMap); rangeMap.put(Range.open(10, 20), "foo"); System.out.println("rangeMap:"+rangeMap); rangeMap.remove(Range.closed(5, 11)); System.out.println("rangeMap:"+rangeMap); } 输出: rangeMap:[[1‥10]=foo] rangeMap:[[1‥3]=foo, (3‥6)=bar, [6‥10]=foo] rangeMap:[[1‥3]=foo, (3‥6)=bar, [6‥10]=foo, (10‥20)=foo] rangeMap:[[1‥3]=foo, (3‥5)=bar, (11‥20)=foo]
Ansicht von RangeMap
RangeMap bietet zwei Ansichten:
asMapOfRanges() : Zurück zur Karte
Das Obige ist der Inhalt der Java-Class Library-Guava-Table. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!