我们在使aslist()
方法可排序时遇到了一个问题。
我们认为只需扩展View类并重写asList方法就可以做到这一点,但意识到View类有一个私有构造函数,所以我们无法做到这一点。
java prettyprint-override">@Override
protected List<T> fromElements(Iterable<WindowedValue<T>> contents) {
Iterable<T> itr = Iterables.transform(
contents,
new Function<WindowedValue<T>, T>() {
@SuppressWarnings("unchecked")
@Override
public T apply(WindowedValue<T> input){
return input.getValue();
}
});
LOG.info("#### About to start sorting the list !");
List<T> tempList = new ArrayList<T>();
for (T element : itr) {
tempList.add(element);
};
Collections.sort((List<? extends Comparable>) tempList);
LOG.info("##### List should now be sorted !");
return ImmutableList.copyOf(tempList);
}
我们如何能够实现这一点(从aslist
方法调用中获得排序列表)?
pCollectionViews
中的类不用于扩展。只支持view.assingleton
、view.assingleton
view.asiterable
、view.asmap
和view.asmultimap
提供的基本视图类型。
要从pCollectionView
获得排序列表,需要在读取后对其进行排序。下面的代码演示了该模式。
// Assume you have some PCollection
PCollection<MyComparable> myPC = ...;
// Prepare it for side input as a list
final PCollectionView<List<MyComparable> myView = myPC.apply(View.asList());
// Side input the list and sort it
someOtherValue.apply(
ParDo.withSideInputs(myView).of(
new DoFn<A, B>() {
@Override
public void processElement(ProcessContext ctx) {
List<MyComparable> tempList =
Lists.newArrayList(ctx.sideInput(myView));
Collections.sort(tempList);
// do whatever you want with sorted list
}
}));
当然,您可能不想重复对其进行排序,这取决于排序的成本与将其物化为新的pcollection
的成本,因此可以输出该值并将其作为新的侧输入进行读取,而不会有困难:
// Side input the list, sort it, and put it in a PCollection
PCollection<List<MyComparable>> sortedSingleton = Create.<Void>of(null).apply(
ParDo.withSideInputs(myView).of(
new DoFn<Void, B>() {
@Override
public void processElement(ProcessContext ctx) {
List<MyComparable> tempList =
Lists.newArrayList(ctx.sideInput(myView));
Collections.sort(tempList);
ctx.output(tempList);
}
}));
// Prepare it for side input as a list
final PCollectionView<List<MyComparable>> sortedView =
sortedSingleton.apply(View.asSingleton());
someOtherValue.apply(
ParDo.withSideInputs(sortedView).of(
new DoFn<A, B>() {
@Override
public void processElement(ProcessContext ctx) {
... ctx.sideInput(sortedView) ...
// do whatever you want with sorted list
}
}));
您还可能对使用内存和本地磁盘进行较大排序的不受支持的排序器contrib模块感兴趣。
问题内容: 到目前为止我尝试过的是: 在createPartControl中: 但这不起作用。我的问题是,如果我调整程序窗口的大小,则滚动条不会出现在视图中。有任何想法吗? 问题答案: ScrolledComposite的Javadoc描述了两种使用方式,包括示例代码。总结一下: 您可以在控件/复合物本身上设置控件/复合物的大小 或者,您告诉您用于内容的最小大小。 目前,您什么都没做。您可以在上设
嘿,对不起,我的英语不好。。。 我的 ListFragment 中有一个 ListView,带有自定义适配器。在我的布局中,我有一个按钮。按钮和整个项目/行是可单击的。我用为ImageButton实现了这一点。正如您在 getView() 方法中看到的,我捕获了一个单击操作。 这是我的布局: 现在我想知道你是否可以在不选择整个视图的情况下点击按钮,但仍然注意到背景上的点击(我知道我在列表视图中的位
单击时的卡片视图正在工作。但回收器视图的区域不可单击。如何使其可点击,以便捕获卡片视图的事件。
问题内容: 我已经在SO文档中编写了一个示例,以统一上述问题的答案,但是由于文档将于2017年8月8日关闭,因此,我将遵循这一广受好评和讨论的元答案的建议,并将我的示例转换为自我回答发布。 当然,我也很高兴看到任何其他方法!! 题: 我想在Django Rest Framework项目上使用非通用视图/视图集(例如:)。 当我阅读分页文档时: 仅在使用通用视图或视图集时才自动执行分页。如果您使用的
概览: swift4语言模仿iOS11苹果商店基本框架页面。 特性 swift4语法,搭建页面基本结构,适合初学者学习 轻量级设计,项目结构目录清晰,让你所见即所得 适配iPhoneX、XS、XR、XSMax 功能 各Tabbbar主页面基本还原 UICollectionView和UITableView的完美灵活运用 灵活多变的导航栏,各机型完美兼容 后期有时间补上详情页,持续更新 截图
我注意到XCode中的UI组件:。 根据提供的描述,我想利用它在几个不同的屏幕上显示我的应用程序的可重用组件。我一直在网上寻找一个基本的教程或一些留档,但我没有找到任何有用的东西。 请问有人能建议如何把这个连接起来并利用它吗?目前,容器视图似乎没有调整大小,这是有问题的。关于如何启用此功能的任何提示也将不胜感激。 干杯