小编Fab*_*ndl的帖子

番石榴:为什么没有Lists.filter()函数?

有没有理由呢

Lists.transform()
Run Code Online (Sandbox Code Playgroud)

但不是

Lists.filter()
Run Code Online (Sandbox Code Playgroud)

如何正确过滤列表?我可以用

new ArrayList(Collection2.filter())
Run Code Online (Sandbox Code Playgroud)

当然,但是如果我理解正确,这种方式并不保证我的订单保持不变.

java list filter guava

86
推荐指数
5
解决办法
4万
查看次数

将列表的元素分组到子列表中(可能使用guava)

我想分组列表的元素.我现在这样做:

public static <E> List<List<E>> group(final List<E> list, final GroupFunction<E> groupFunction) {

    List<List<E>> result = Lists.newArrayList();

    for (final E element : list) {

        boolean groupFound = false;
        for (final List<E> group : result) {
            if (groupFunction.sameGroup(element, group.get(0))) {
                group.add(element);
                groupFound = true;
                break;
            }
        }
        if (! groupFound) {

            List<E> newGroup = Lists.newArrayList();
            newGroup.add(element);
            result.add(newGroup);
        }
    }

    return result;
}

public interface GroupFunction<E> {
    public boolean sameGroup(final E element1, final E element2);
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点,最好是使用番石榴?

java grouping function list guava

36
推荐指数
2
解决办法
4万
查看次数

React-native:保持状态或类属性的动画值?

将动画值(fadeAnim)保持为状态属性还是可以将其设置为类属性更好?

例:

class ModalShade extends React.Component {
    fadeAnim = new Animated.Value(0)

    render() {
        return (
            <Animated.View
                cls="bg-black absolute-fill"
                style={{ opacity: this.fadeAnim }}
            />
        )
    }

    componentDidMount() {
        Animated.spring(
            this.fadeAnim, {
                toValue: 0.6,
                tension: 100,
                friction: 20
            }
        ).start();
    }
}
Run Code Online (Sandbox Code Playgroud)

澄清:我知道该状态用于反应的和解.React-native' Animated值绕过通常的render(),因此即使没有状态更改,组件也会更新.

我没有看到在比较Animated.Value我的任何一点shouldComponentUpdate,这就是为什么我把它移出州.

ecmascript-6 reactjs react-native

26
推荐指数
2
解决办法
4071
查看次数

IntelliJ IDEA和Gradle:为什么每个子模块有3个模块?

我对IntelliJ IDEA的gradle集成以及gradle子项目到IDEA模块的映射感到困惑.

  • 为什么每个gradle子项目(client,client_main和client_test)都有3个模块?
  • 有没有办法摆脱"父"模块?每次我删除它时,我的构建都会以令人困惑的方式打破.

项目结构

UPDATE

  • 第三个模块("服务器")的内容根始终设置为整个文件夹,如下所示.这意味着我无法将构建中的目录标记为生成的源,因为默认情况下会将其排除.

在此输入图像描述

java intellij-idea gradle

18
推荐指数
2
解决办法
1万
查看次数

正确的onDestroy()/如何避免内存泄漏

我阅读了一些关于如何避免Android内存泄漏的文章,但我仍然不确定我是否做对了.

  1. 我的应用程序由一个单独组成Activity.
  2. 我在该Activity中没有任何私有或静态成员,所有代码都是从内部启动的onCreate().
  3. 有一些自包含的静态类,其静态实例有时会包含对a ContextViews的引用 .在我的onDestroy()方法中,我将所有这些实例设置为null.
  4. 我回收了所有Bitmap的东西.

Q1:那够了吗?

令我困惑的是你可以在网上找到的禁忌的经典例子(http://www.curious-creature.org/2008/12/18/avoid-memory-leaks-on-android/):

@Override
protected void onCreate(Bundle state) {
  super.onCreate(state);

  TextView label = new TextView(this);
  label.setText("Leaks are bad");

  setContentView(label);
}
Run Code Online (Sandbox Code Playgroud)

我认为,一旦onCreate完成,label就会超出范围并进行GCed.

Q2:这怎么会造成内存泄漏?

我的活动基本上是这样的:

@Override
public void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    /* Statics */
    AssetUtils.initIndex(this);
    BitmapLoader.startInstance(this);

    /* frame */
    ViewGroup frame = (ViewGroup) getLayoutInflater().inflate(R.layout.frame, null);
    this.setContentView(frame);

    /* create controller */
    Controller controller = new Controller(frame, …
Run Code Online (Sandbox Code Playgroud)

android memory-leaks view android-activity

13
推荐指数
1
解决办法
2万
查看次数

性能:如何防止requestLayout()布局整个层次结构

我有一个非常复杂的android应用程序.尽可能扁平化视图层次结构,但我仍然在应用程序中滞后.例如,有一个菜单,其条目通过将其高度设置为a来折叠/展开ValueAnimator.通常,动画在第一次运行时会有一点滞后,并且在第一次通过后会平滑.

我注意到,当我在菜单项上调用"requestLayout()"时,Android似乎会执行布局传递和多次测量 - 遍历整个层次结构.

  • 既然我知道虽然菜单项(视图)改变了高度,但菜单(视图)本身没有,是否有某种方法可以告诉应用程序?
  • 我可以以某种方式执行这个似乎落后于自己的第一遍,以便它在应用程序启动后而不是在第一次触摸输入时发生吗?

这是我正在做的动画的草图:

在此输入图像描述

performance layout android

10
推荐指数
2
解决办法
4911
查看次数

WeakReference#get()什么时候开始返回null?

我想使用WeakReferences作为(android)位图缓存的一部分,以便能够检查何时不再使用位图.

我的缓存的最大大小小于Java堆空间.当一个新的位图溢出缓存时,它应该放弃不再需要的位图.

我的问题:什么时候get() - WeakReference返回null的方法?

  1. 只要对象没有更强的引用?(还没有发生GC)
  2. 或者当GC运行并确定它们不再是对象的强引用时?

如果2.是真的,那么我可能遇到我的缓存可能会填满并且GC最近因某些原因没有运行的情况.

然后,即使我在最后一次GC运行之后已经放弃了引用,WeakReference#get()仍然会返回该对象,并且我的缓存不会清除它.

java android garbage-collection reference weak-references

9
推荐指数
3
解决办法
6352
查看次数

Guava EventBus:不捕获RuntimeException

我使用guava的EventBus,遗憾的是它捕获并记录了当事件处理程序抛出RuntimeException时发生的InvocationTargetException.我可以禁用此行为吗?

java exception guava runtimeexception

8
推荐指数
1
解决办法
2858
查看次数

React.cloneElement:传递新的孩子或复制props.children?

我很困惑第三个"儿童"参数React.cloneElement和它的关系this.props.children.

我在高阶组件上遵循了本指南,并具有以下代码:

render() {
    const elementsTree = super.render()

    let myPropChange = {}

    /* work on newProps... */
    myPropChange.something = "nice!".

    const newProps = Object.assign({}, elementsTree.props, myPropChange)

    /* map children */
    const newChildren = React.Children.map(elementsTree.props.children, c => something(c))

    return React.cloneElement(elementsTree, newProps, newChildren)
}
Run Code Online (Sandbox Code Playgroud)
  • 我应该将映射的孩子放入我的newProps.children或者我应该将它们作为第三个参数传递给我cloneElement吗?

  • Object.assign无论如何都要将孩子复制propsnewProps我这里,我应该跳过它们吗?

  • 在指南中说

    组件无法保证解析完整的子树.

    这在我的情况下意味着什么?那this.props.children不是吗?

  • 添加了第4个问题:为什么我要克隆道具而不是直接编辑它们?

javascript higher-order-functions reactjs

8
推荐指数
1
解决办法
5426
查看次数

为什么jQuery在我的GreaseMonkey脚本中加载两次

由于某种原因,我的Firefox4 + GreaseMonkey脚本加载了两次jQuery.我复制'n'pasted以下片段,"测试"警报显示两次.

问候

var $;

// Add jQuery
(function(){
    if (typeof unsafeWindow.jQuery == 'undefined') {
        var GM_Head = document.getElementsByTagName('head')[0] || document.documentElement,
            GM_JQ = document.createElement('script');

        GM_JQ.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js';
        GM_JQ.type = 'text/javascript';
        GM_JQ.async = true;

        GM_Head.insertBefore(GM_JQ, GM_Head.firstChild);
    }
    GM_wait();
})();

// Check if jQuery's loaded
function GM_wait() {
    if (typeof unsafeWindow.jQuery == 'undefined') {
        window.setTimeout(GM_wait, 100);
    } else {
        $ = unsafeWindow.jQuery.noConflict(true);
        letsJQuery();
    }
}

// All your GM code must be inside this function
function letsJQuery() {
    alert("test");
}
Run Code Online (Sandbox Code Playgroud)

javascript jquery greasemonkey

7
推荐指数
1
解决办法
1821
查看次数