您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

Java-类库-Guava-Table

2025/10/2 6:28:35发布16次查看
table
当我们需要多个索引的数据结构的时候,通常情况下,我们只能用这种丑陋的map
[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
table视图:
rowmap()返回一个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
rangeset用来处理一系列不连续,非空的range。当添加一个range到一个rangeset之后,任何有连续的range将被自动合并,而空的range将被自动去除。例如:
[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); }
注意,像合并range.closed(1, 10)和range.closedopen(11, 15)这样的情况,我们必须先用调用range.canonical(discretedomain)传入discretedomain.integers()处理一下。
rangeset的视图
rangeset的实现支持了十分丰富的视图,包括:
complement():是个辅助的rangeset,它本身就是一个rangeset,因为它包含了非连续,非空的range。
subrangeset(range): 返回的是一个交集的视图。
asranges():返回可以被迭代的set
[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]
rangemap的视图
rangemap提供了两种视图:
asmapofranges():返回map
以上就是java-类库-guava-table的内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product