问题列表 - 第43735页

两个或更多(哈希)映射的联合

我有两个包含相同类型对象的地图:

Map<String, TaskJSO> a = new HashMap<String, TaskJSO>();
Map<String, TaskJSO> b = new HashMap<String, TaskJSO>();

public class TaskJSO { String id; }
Run Code Online (Sandbox Code Playgroud)

地图键是"id"属性.

a.put(taskJSO.getId(), taskJSO);
Run Code Online (Sandbox Code Playgroud)

我想获得一个列表:"Map b"中的所有值+"Map a"中不在"Map b"中的所有值.

这项操作的最快方法是什么?

谢谢

编辑:比较由id完成.因此,如果两个TaskJSO具有相同的id(等于方法被覆盖),则认为它们是相等的.

我的目的是从性能的角度来了解哪种方法最快.例如,如果我在地图中执行"比较"(如彼得所建议的那样),是否有任何区别:

Map<String, TaskJSO> ab = new HashMap<String, TaskJSO>(a);
ab.putAll(b);
ab.values()
Run Code Online (Sandbox Code Playgroud)

或者如果我使用一套(如Nishant所建议):

Set s = new Hashset();
s.addAll(a.values());
s.addAll(b.values());
Run Code Online (Sandbox Code Playgroud)

java performance hashmap

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

如何向 Tab 控件添加控件

我在 GUI 应用程序中使用选项卡控件,并且我知道如何从中添加和删除选项卡(TCM_INSERTITEM 等),但我不知道如何向选项卡添加其他控件,如按钮等。如何添加控件到一个选项卡?(注意,我不是PropertySheet控件,而是Tab控件。)

winapi tabs controls addition

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

如何使用视频对对象进行运动跟踪?

有人可以指导我阅读教程或指导我如何跟踪用6自由度移动的物体的运动.我计划使用移动玩具车的视频流.我想计算玩具车的位移和旋转角度.我发现了一些研究论文,但找不到任何图书馆.

有没有办法使用OpenCV或Matlab或其他一些免费提供的软件?

谢谢

matlab opencv video-processing computer-vision

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

使用jQuery切换输入禁用属性

这是我的代码:

$("#product1 :checkbox").click(function(){
    $(this)
        .closest('tr') // Find the parent row.
            .find(":input[type='text']") // Find text elements in that row.
                .attr('disabled',false).toggleClass('disabled') // Enable them.
                .end() // Go back to the row.
            .siblings() // Get its siblings
                .find(":input[type='text']") // Find text elements in those rows.
                .attr('disabled',true).removeClass('disabled'); // Disable them.
});
Run Code Online (Sandbox Code Playgroud)

我如何切换.attr('disabled',false);

我似乎无法在Google上找到它.

jquery toggle attr

177
推荐指数
4
解决办法
17万
查看次数

松耦合隐式转换

类型在语义上等效时,隐式转换非常有用.例如,假设两个库以相同的方式实现类型,但在不同的命名空间中.或者只是一种大多数相同的类型,除了一些语义糖在这里和那里.现在,您无法将一种类型传递给设计为使用另一种的函数(在其中一个库中),除非该函数是模板.如果不是,你必须以某种方式将一种类型转换为另一种类型.这应该是微不足道的(或者其他类型在后面都不是那么相同!)但是调用转换显然会使代码膨胀,而且函数调用几乎毫无意义.虽然这样的转换函数实际上可能会复制一些值,但它们从高级"程序员"的角度来看基本上什么都不做.

隐式转换构造函数和运算符显然可以提供帮助,但它们引入了耦合,因此其中一种类型必须知道另一种类型.通常,至少在处理库时,情况并非如此,因为其中一种类型的存在使另一种类型变得冗余.此外,您不能总是更改库.

现在我看到有关如何在用户代码中进行隐式转换的两个选项:

  1. 第一个是提供代理类型,它为所有涉及的类型实现转换操作符和转换构造函数(和赋值),并始终使用它.

  2. 第二个需要对库进行最小的更改,但允许很大的灵活性:为每个可以在外部选择启用的相关类型添加转换构造函数.

例如,对于类型A添加构造函数:

template <class T> A(
  const T& src,
  typename boost::enable_if<conversion_enabled<T,A>>::type* ignore=0
)
{
  *this = convert(src);
}
Run Code Online (Sandbox Code Playgroud)

和一个模板

template <class X, class Y>
struct conversion_enabled : public boost::mpl::false_ {};
Run Code Online (Sandbox Code Playgroud)

默认情况下禁用隐式转换.

然后要启用两种类型之间的转换,请专门化模板:

template <> struct conversion_enabled<OtherA, A> : public boost::mpl::true_ {};
Run Code Online (Sandbox Code Playgroud)

并实现一个convert可以通过ADL找到的函数.

我个人更喜欢使用第二种变体,除非有强烈的反对意见.

现在回答实际问题:关联隐式转换类型的首选方法是什么?我的建议是好主意吗?两种方法都有任何缺点吗?允许这样的转换是危险的吗?如果库类实现者通常会提供第二种方法,那么它们的类型很可能会被软件复制,而这些软件很可能与它们一起使用(我在考虑使用3d渲染中间件,其中大多数软件包实现了3D向量).

c++ boost-mpl enable-if

25
推荐指数
1
解决办法
1061
查看次数

在List <T>上对Datagridview数据源进行排序,其中T是匿名的

一个相对简单的问题.我有一个datagridview,它只是显示统计信息.没有编辑/添加/删除行.datagridview绑定到List.我想要实现的是让用户能够对列进行排序.

class Market
{
    public int Location {get;set;}
    public float Value {get;set;}
    //...
}
class City
{
    public String Name {get;set;}
    //...
}

List<Market> _markets;
List<City> _cities;
//Lists are populated.

dataGridView1.DataSource = _markets.Select(market => 
    new { _cities[market.Location].Name, market.Value}).ToList();
Run Code Online (Sandbox Code Playgroud)

正如所料,列不可排序,但显示的信息是您想要的.我的问题是如何根据具有最少复杂和最少代码量的列类型进行DataGridView排序,因为代码将在整个过程中多次使用.

此应用程序用于使用具有视图的数据库.然后这些视图填充DataGridViews.观点仍然存在,因此可能的解决方案可能是:

DataBase.ViewMarketValue temp = new DataBase.ViewMarketValue()

_markets.ForEach(market => temp.AddViewMarketValueRow(_cities[market.Location].Name, market.Value);
dataGridView1.DataSource = temp;
Run Code Online (Sandbox Code Playgroud)

这导致了所需的:具有所有信息的数据网格视图,并且它是可排序的.唯一的问题是在这方面使用视图似乎是错误的.所以我该怎么做?

c# linq sorting datagridview anonymous-types

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

在Codeigniter中显示来自连接的数据

我正在使用一个简单的连接从两个数据库中提取数据.这是模型中的连接:

function com_control(){
    $this->db->select('*');
    $this->db->from('comments');
    $this->db->join('posts', 'comments.entry_id = posts.id');
    $query = $this->db->get();
    return $query->result;
}
Run Code Online (Sandbox Code Playgroud)

我想要的显示方法将在一个表中,所以我开始像这样使用:

foreach($comm_control as $row){

   $this->table->add_row(
   $row->entry_id,
   $row->comments.id,
   $row->comment,
   $row->title             
   );      
}//end of foreach
Run Code Online (Sandbox Code Playgroud)

我的问题是来自comments.id的数据显示.将comment.id添加到表行的正确格式是什么?我需要来自两个表的ID,以便在表格中进一步显示,编辑和删除.我此时获得的唯一显示"comment.id"的是id.

任何帮助,将不胜感激.

php join codeigniter

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

在WebGL上访问图像/纹理数据(纹素)

我在WebGL上有以下代码片段:

var texture = gl.createTexture();
texture.image = new Image();
texture.image.onload = function() { 
     .... // I want to read the pixels once the image has been loaded
};
texture.image.src = urlImage;
Run Code Online (Sandbox Code Playgroud)

我想在加载后获得纹理贴图的内容(RGBA).类似,readPixels()获取绘图缓冲区内容的能力.

可能吗?如果是这样,最好的做法是什么?

我正在使用Chrome Canary build进行开发.

在此先感谢您的帮助.

注:http ://www.khronos.org/message_boards/viewtopic.php?f = 43&t=3439上的交叉发布

webgl

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

从List <E>中取n个随机元素?

我如何从一个ArrayList<E>?理想情况下,我希望能够连续调用该take()方法来获取另一个x元素,而无需替换.

java random algorithm sampling

68
推荐指数
6
解决办法
4万
查看次数

核心数据和多线程

我在他的核心数据书中读过Marcus Zarra关于多线程的章节,并且仔细研究了他的示例代码.但他的代码和其他人,我已经找到其他地方似乎那些后台进程重点并不需要知道对方的.这些示例适用于导入树结构 - 但它们不涉及导入更通用(复杂)的结构,如有向非循环图.

在我的例子中,我试图解析一个C++类层次结构,并希望尽可能多地使用NSOperations.我想为每个遇到的类创建一个NSManagedObject实例,并且我想在保存一个时合并不同的NSManagedObjectContexts.

顺便说一句:我能够使用单个NSOperation来处理文件并一次解析一个文件.在这个实现中,在主线程的MOC上调用-mergeChangesFromContextDidSaveNotification的-mergeChanges:方法效果很好.

但理想情况下,我会对源文件进行一次NSOperation迭代,并生成NSOperations来解析每个文件.我尝试了几种方法 - 但似乎无法做到正确.最有希望的是让每个NSOperation观察NSManagedObjectContextDidSaveNotification.使用-mergeChanges:看起来像这样:

- (void) mergeChanges:(NSNotification *)notification
 {
 // If locally originated, then trigger main thread to merge.
 if ([notification object] == [self managedObjectContext])
  {
  AppDelegate *appDelegate = (AppDelegate*)[[NSApplication sharedApplication] delegate];
  NSManagedObjectContext *mainContext = [appDelegate managedObjectContext];

  // Merge changes into the main context on the main thread
  [mainContext performSelectorOnMainThread:@selector(mergeChangesFromContextDidSaveNotification:)
         withObject:notification
         waitUntilDone:YES];
  return;
  }
   // If not locally originated, then flag need to merge with in this NSOperation's thread.  
 [self setNeedsToMerge:YES];
 [self setMergeNotification:notification]; …
Run Code Online (Sandbox Code Playgroud)

multithreading core-data nsmanagedobjectcontext

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