问题列表 - 第2213页

收藏地图

我想用Java制作集合地图,所以我可以制作类似的东西

public void add(K key, V value) {  
    if (containsKey(key)) {
        get(key).add(value);
    } else {
        Collection c = new Collection();
        c.add(value);
        put(key, value);
    }
}
Run Code Online (Sandbox Code Playgroud)

我试图用类似的东西制作它

public class CollectionMap<K, C extends Collection<V>> extends HashMap<K, C>
Run Code Online (Sandbox Code Playgroud)

但编译器抱怨该<V>部分,并且仍然存在制作适当的新集合的问题.

目前,我已经创建了两个类:SetMap,看起来像这样

 1: public class SetMap<K, V> extends HashMap<K, Set<V>> {
 2: 
 3:    public void add(K key, V value) {
 4:        if (containsKey(key)) {
 5:            get(key).add(value);
 6:        } else {
 7:            Set<V> list = new HashSet<V>();
 8:            list.add(value);
 9:            put(key, list);
10:        } …
Run Code Online (Sandbox Code Playgroud)

java generics collections

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

使用单独的委托/ dataSource时出现UITableView问题

概述:

首先,我UITableView使用Interface Builder将其置于Xcode生成的视图中.视图的文件所有者设置为Xcode生成的子类UIViewController.为了这个子类我已经加入工作的实施numberOfSectionsInTableView: tableView:numberOfRowsInSection:以及tableView:cellForRowAtIndexPath:与表视图的dataSource,并delegate通过在Interface Builder文件所有者连接到这个类.

上述配置没有问题.当我想将这个Table View dataSourcedelegate-implementations移到一个单独的类时,问题就出现了,很可能是因为除了Table View之外还有View上的其他控件,我想将Table View相关的代码移到它的自己的班级.为此,我尝试以下方法:

  • UITableViewController在Xcode中创建一个新的子类
  • 移动已知良好的实现numberOfSectionsInTableView:,tableView:numberOfRowsInSection:并移动tableView:cellForRowAtIndexPath:到新的子类
  • 将a 拖到InterfaceBuilder中现有 XIB UITableViewController的顶层 ,删除为此自动创建的/ ,然后将该类设置为与新子类匹配UIViewUITableViewUITableViewControllerUITableViewController
  • 删除以前工作UITableView的现有dataSourcedelegate连接,并将它们连接到新的UITableViewController

完成后,我没有工作UITableView.我最终得出了三个结果中的一个,这些结果似乎随机发生:

  • UITableView加载时,我得到一个运行时错误,指示我发送tableView:cellForRowAtIndexPath:到一个无法识别它的对象
  • UITableView加载时,项目会毫无错误地进入调试器
  • 没有错误,但UITableView没有出现

通过一些调试并创建了一个基本项目来重现这个问题,我通常会看到上面的第三个选项(没有错误但没有可见的表视图).我添加了一些NSLog调用,发现虽然numberOfSectionsInTableView:并且numberOfRowsInSection:都被调用,但cellForRowAtIndexPath:不是.我确信我错过了一些非常简单的事情,希望对于经验丰富的人来说答案可能是显而易见的.如果这不是一个简单的答案,我很乐意更新一些代码或示例项目.谢谢你的时间!

完成重现的完整步骤:

  • 在Xcode中创建一个新的iPhone OS,基于视图的应用程序并调用它 TableTest
  • TableTestViewController.xib …

iphone cocoa-touch objective-c uitableview

54
推荐指数
2
解决办法
5万
查看次数

在64位计算机上安装32位操作系统是否有带宽改进?

Knuth 最近反对 64位系统,称对于适合4 GB内存的程序,"它们实际上会丢弃一半的缓存",因为指针是32位系统的两倍.

我的问题是:通过在64位计算机上安装32位操作系统可以避免这个问题吗?是否有任何带宽密集型基准测试证明了这种情况下的优势?

memory hardware 64-bit caching 32-bit

5
推荐指数
2
解决办法
662
查看次数

如何在不使用-cp开关的情况下在Groovy中自动加载数据库jar?

我想简化执行调用Oracle数据库的Groovy脚本的过程.如何将ojdbc jar添加到默认的类路径中,以便我可以运行:

groovy RunScript.groovy
Run Code Online (Sandbox Code Playgroud)

代替:

groovy -cp ojdbc5.jar RunScript.groovy
Run Code Online (Sandbox Code Playgroud)

java scripting groovy classpath

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

如何在PHP中将图像转换为黑白图像

如何在PHP中将图像转换为黑白图像?

不只是把它变成灰度,而是每个像素变成黑色或白色?

php image imagefilter

14
推荐指数
3
解决办法
3万
查看次数

无论'entry'关键字发生了什么?

前几天在我的白皮书中巡航时,我在C关键字列表中注意到了. entry是该列表中的关键字之一.

它留作将来使用.回想一下我的Fortran时代,有一种类型的函数使用entry语句来创建第二个参数签名,或者进入函数的入口点.

这是最初打算用于什么条目?或者完全不同的东西?

关于entry关键字的故事是什么?

c language-design

35
推荐指数
3
解决办法
6041
查看次数

如何在Delphi中的字符串中包含换行符?

我想创建一个跨越多行的字符串,以分配给Label Caption属性.这是如何在Delphi中完成的?

delphi newline

94
推荐指数
7
解决办法
15万
查看次数

使用Resizing上传ASP.NET图像

我有一个aspx页面,它将从客户端pc上传图像到服务器硬盘

但现在我需要改变我的程序,这样我就可以在上传时调整图像大小.

有没有人对此有任何想法?我无法使用输入文件服务器控件找到这样的属性/方法

那里有人指导我吗?

asp.net resize image uploading

35
推荐指数
2
解决办法
7万
查看次数

你只能拥有自治服务

SOA的原则之一是:"服务是自治的".我有2项服务.服务A取决于服务B.除非服务B启动并运行,否则服务A无法为客户端提供服务.我是否违反了这一宗旨?

或者,如果自治必须意味着"解耦",那么如果我有故障保护,我是否满足了这个原则(例如,如果主要实例已经关闭,那么另一个运行在其他地方的服务B的实例是连接到的).这可能满足我的可用性要求,但我不确定这如何可以减少我的依赖性.是的,故障保险甚至可以是来自第三方的服务C,在这种情况下,我确实提高了我的自主权.

或者这个原则是否意味着必须将服务设计为"fifedoms",并且具有明确定义的接口,用于获取和输出数据.然而,一些大师似乎认为你甚至需要存储你在内部收到的这些数据,以减少依赖并维持你的自主权......

如果我将服务视为具有消息传递的组件,这是一个错误吗?:)

思考?

wcf soa

4
推荐指数
1
解决办法
745
查看次数

HashSet.remove()和Iterator.remove()不起作用

我遇到了Iterator.remove()在HashSet上调用的问题.

我有一组带时间戳的物体.在向Set添加新项目之前,我遍历该集合,识别该数据对象的旧版本并将其删除(在添加新对象之前).时间戳包含在hashCode和equals()中,但不包括equalsData().

for (Iterator<DataResult> i = allResults.iterator(); i.hasNext();)
{
    DataResult oldData = i.next();
    if (data.equalsData(oldData))
    {   
        i.remove();
        break;
    }
}
allResults.add(data)
Run Code Online (Sandbox Code Playgroud)

奇怪的是,i.remove()默默地对集合中的某些项目失败(没有异常).我已经证实了

  • 实际上调用了i.remove()行.我可以直接在Eclipse的断点处从调试器调用它,但仍然无法更改Set的状态

  • DataResult是一个不可变对象,因此在最初添加到集合后它不能更改.

  • equals和hashCode()方法使用@Override来确保它们是正确的方法.单元测试验证了这些工作.

  • 如果我只使用for语句和Set.remove,这也会失败.(例如循环遍历项目,找到列表中的项目,然后在循环后调用Set.remove(oldData)).

  • 我已经在JDK 5和JDK 6中进行了测试.

我以为我必须遗漏一些基本的东西,但是在我的同事上度过了一些重要的时间后,我感到难过.有什么建议要检查吗?

编辑:

有一些问题 - DataResult是真正不可改变的.是.没有制定者.当检索Date对象(这是一个可变对象)时,它通过创建一个副本来完成.

public Date getEntryTime()
{
    return DateUtil.copyDate(entryTime);
}

public static Date copyDate(Date date)
{
    return (date == null) ? null : new Date(date.getTime());
}
Run Code Online (Sandbox Code Playgroud)

进一步编辑(一段时间后):为了记录 - DataResult不是一成不变的!它引用了一个对象,该对象的哈希码在持久化到数据库时发生了变化(我知道这是一种不好的做法).事实证明,如果使用瞬态子对象创建了DataResult,并且子对象被持久化,则DataResult哈希码已更改.

非常微妙 - 我多次看了这个,并没有注意到缺乏不变性.

java collections

34
推荐指数
2
解决办法
3万
查看次数