Heim  >  Artikel  >  Java  >  Java-Klassenbibliothek-Guava-Tabelle

Java-Klassenbibliothek-Guava-Tabelle

黄舟
黄舟Original
2017-01-19 13:16:341955Durchsuche

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 = &#39;A&#39;; a <= &#39;C&#39;; ++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)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn