group 之后分组子集
Java 代码 Stream 执行分组,返回的是 Key,List 集合。
从 SPL 的 group 之后获取的是分组子集。从执行的情况来看。返回的是集合的集合,与 java 不一样,即不是返回的 Key,List 集合。
在 SPL 中,针对已经分组之后的结果,获取分组的列,与获取分组之后的分组子集的方式是不一样的。
如 A2.group(STATE)
然后 访问 A5.(STATE)得到 STATE 列 ( 等价与 A5.(.STATE)
如果访问分组子集,A5.(.select(SALARY>8000),采用了 ~ 的方式
测试所用的 splx 文件
疑问
分组之后,得到集合的集合
访问 分组键 A5.(.STATE)
访问分组后的子集 A5.(.select(SALARY>8000)
方式为什么不一样?
获取分组键,是否应该采用这种方式 =A5.(~.id(STATE).conj())(但是结果是一个带有[]的序列)
自己在纸上画一画这些对象之间的层次关系就知道了。
一层如何变二层,二层又如何变一层,都是明确的,SPL 这方面是严格的。
但是,有个简写:A 是集合时,A.F 相当于 A(1).F,严格地说 A.F 是无定义的。
Java 默认分组之后是 Map<key,List> 。SPL 分组之后,是集合的集合吗? 如果是集合的集合 List<List>,那么如何快速访问它的分组键。如果与 Java 一样,分组之后,也是 Map<key,List>, 那么在分组之后,访问某一个元素 ~ ,这个是指 Key,还是指 List
回到高一数学。集合就是集合,由多个成员构成集合。N 个集合可以作为成员再构成更大的集合。
忘掉 Java,忘掉 Map。这里没有什么 Key 和 List 说法。这里只有集合和成员的概念。