问题列表 - 第36334页

功能编程:列表是否仅包含唯一项?

我有一个未排序的列表,想要知道它中的所有项目是否都是唯一的.
我天真的做法是

val l = List(1,2,3,4,3)
def isUniqueList(l: List[Int]) = (new HashSet()++l).size == l.size

基本上,我正在检查包含列表中所有元素的Set是否具有相同的大小(因为在原始列表中出现两次的项目只会在集合中出现一次),但我不确定这是否是理想的解决方案对于这个问题.

编辑: 我的基准3个最流行的解决方案,l==l.distinct,l.size==l.distinct.size和阿列克谢的基于HashSet的解决方案.每个函数运行1000次,包含10个项目的唯一列表,10000个项目的唯一列表以及第三个季度中出现的一个项目复制到列表中间的相同列表.在每次运行之前,每个函数都被调用1000次来预热JIT,整个基准测试在使用System.currentTimeMillis之前运行了5次.这台机器是C2D P8400(2.26 GHz),内存为3GB,java版本是OpenJDK 64位服务器VM(1.6.0.20).java args是-Xmx1536M -Xms512M

结果:

l.size==l.distinct.size (3, 5471, 2, 6492)
l==l.distinct           (3, 5601, 2, 6054)
Alexey's HashSet        (2, 1590, 3, 781)

较大对象的结果(字符串从1KB到5KB):

l.size==l.distinct.size MutableList(4, 5566, 7, 6506)
l==l.distinct           MutableList(4, 5926, 3, 6075)
Alexey's HashSet        MutableList(2, 2341, 3, 784)

使用HashSets的解决方案肯定是最快的,正如他已经指出的使用.size并没有产生重大影响.

language-agnostic functional-programming scala

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

5
推荐指数
1
解决办法
563
查看次数

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

将选择更改提交到另一个分支然后恢复当前分支的工作?

这通常发生在我的工作流程中:我正在一个单独的分支中处理一个功能,而在执行此操作时,我会遇到需要修复的小东西,但是例如在框架或站点布局中处于较高位置.

我想切换回主开发分支并从那里提交选择文件的更改,然后返回到功能分支,并重新设置,以便我可以继续使用无关的调整/错误修正.

我正在使用git stashgit stash pop执行此操作,但是我从一些我修改过的文件中得到了很多冲突,但无论如何都不需要提交给父分支.

是否有另一种方法可以避免冲突或以某种方式保存当前状态,只将选择工作树更改拉到另一个分支进行提交?(有点像git-stash-cherry-pick ;-))

git branch branching-and-merging

14
推荐指数
1
解决办法
3683
查看次数

如何在Objective c中的类中创建静态NSMutableArray?

我有A类,它是B类和C类的超类.我需要将A类对象存储在A类中定义的'static'NSMutablearray中.是否可以使用B类中的方法修改存储在MSMutableArray中的数据C级?如何创建和初始化静态数组?一个例子是更多的帮助.提前致谢.

arrays objective-c static-members

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

停止绘制CATiledLayer

有可能停止CATiledLayer绘制(drawLayer:inContext)?它以异步方式绘制,当我尝试释放使用的CATiledLayerCGPDFDocumentRef时,应用程序崩溃(EXC_BAD_ACCESS).

这是我的观点:

@implementation TiledPDFView

- (id)initWithFrame:(CGRect)frame andScale:(CGFloat)scale{
    if ((self = [super initWithFrame:frame])) {

        CATiledLayer *tiledLayer = (CATiledLayer *)[self layer];
        tiledLayer.levelsOfDetail = 4;
        tiledLayer.levelsOfDetailBias = 4;
        tiledLayer.tileSize = CGSizeMake(512.0, 512.0);
        myScale = scale;
    }
    return self;
}

// Set the layer's class to be CATiledLayer.
+ (Class)layerClass {
    return [CATiledLayer class];
}

- (void)stopDrawing{
    CATiledLayer *tiledLayer = (CATiledLayer *)[self layer];
    [tiledLayer removeFromSuperlayer];
    tiledLayer.delegate = nil;
}
// Set the CGPDFPageRef for the view.
- (void)setPage:(CGPDFPageRef)newPage
{
    CGPDFPageRelease(self->pdfPage); …
Run Code Online (Sandbox Code Playgroud)

memory-management core-animation core-graphics objective-c

10
推荐指数
1
解决办法
6830
查看次数

我应该首先尝试什么脚本?

我刚刚开始介绍HTML,CSS和PHP的基础知识(以及一些中间方面).练习这3种语言的好起点是什么?

我正在考虑编写一个URL缩短脚本,但我想知道这里是否有人可能有更好的想法.

我希望开发一些能够帮助我拓宽上述3种语言知识的东西,但它不应该太高级,我甚至不知道如何开始它.

任何建议,将不胜感激.

html css php

3
推荐指数
1
解决办法
171
查看次数

如何从ASP.NET MVC局部视图(服务器端)注入CSS文件?

我有一个部分视图(.ascx)应该包含自己的CSS文件,因为它在多个其他视图中使用.如何在页面服务器端注入样式表,即不使用JavaScript?

css asp.net-mvc asp.net-mvc-2

9
推荐指数
1
解决办法
5971
查看次数

JS:使用Array.forEach迭代getElementsByClassName的结果

我想迭代一些DOM元素,我这样做:

document.getElementsByClassName( "myclass" ).forEach( function(element, index, array) {
  //do stuff
});
Run Code Online (Sandbox Code Playgroud)

但我得到一个错误:document.getElementsByClassName("myclass").forEach不是一个函数

我使用的是Firefox 3,所以我知道这两个getElementsByClassNameArray.forEach都存在.这很好用:

[2, 5, 9].forEach( function(element, index, array) {
  //do stuff
});
Run Code Online (Sandbox Code Playgroud)

getElementsByClassName数组的结果?如果没有,那是什么?

javascript foreach getelementsbyclassname

205
推荐指数
8
解决办法
16万
查看次数

在iPhone网络应用中播放声音

我假设可能有一个HTML5或一些JS可以用来播放声音?

在将此标记为重复之前,这个问题已经过时了,所以我相信过时了:

使用Javascript在iPhone网络应用中播放声音?

javascript iphone safari html5

5
推荐指数
1
解决办法
7534
查看次数