小编Jan*_*yne的帖子

如何在Java中将多个(任意数量的)Set <String>合并为一个?

我有多个Set<String>我需要合并为一个Set<String>.如何在Java中执行此操作?请注意,我正在guava尽可能地使用API来帮助解决问题.例如,我有3个类如下.

public class One {
 public static Set<String> SET = Sets.newHashSet("a","b","c");
}
public class Two {
 public static Set<String> SET = Sets.newHashSet("a","d","e","f");
}
public class Three {
 public static Set<String> SET = Sets.newHashSet("w","x","y","f");
}
Run Code Online (Sandbox Code Playgroud)

现在,我需要将这些集合的任意组合合并为一个.例如,我可能需要合并

  • One.SET+ Two.SET+ Three.SET成一个产生{"a","b","c","d","e","f","w","x","y"},
  • One.SET+ Three.SET成一个产生{"a","b","c","w","x","y","f"},
  • Two.SET+ Three.SET成一个产生{"a","d","e","f","w","x","y"},
  • 等等

我创建了一个合并集合数组的方法Set<String>[],但是这不起作用(这里通过这个SO文章在Java中创建一个集合数组来解释).这是要合并的代码.它有效(编译).

public static Set<String> immutableSetOf(Set<String>[] sets) {
 Set<String> set = new HashSet<String>();
 for(Set<String> s : sets) {
  set.addAll(s);
 }
 return …
Run Code Online (Sandbox Code Playgroud)

java collections guava

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

MP4是流媒体协议还是文件格式?

我目前正在使用Wowza来传输视频.我目前正在尝试集成Wowza,Android和ChromeCast设备(CCD).根据此文档,https://developers.google.com/cast/docs/media,Google Cast支持"MP4协议".

所以,我的问题是:MP4是流媒体协议,文件格式还是两者兼而有之?

在ChromeCast Android演示应用程序中,他们只是将这样的URL http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4作为元数据传递给CCD.

对我而言,这意味着不需要服务器来传输MP4文件.意思是,我甚至不需要Wowza作为流媒体的中间方.

这种理解是否正确?

似乎客户端播放器将负责直接与MP4文件交互(例如,搜索,暂停,停止,播放等...).

mp4 android google-cast

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

为什么 doesObjectExist 和 listObjects 在 S3 的 Java API 上不一致?

我有一个 S3 存储桶demo,里面有一个对象demo/somefolder。当我调用s3.doesObjectExists("demo", "somefolder")它时返回 false。但是,当我调用 时s3.listObjects("demo", "somefolder")ObjectListing返回的 引用了S3ObjectSummary.

对这里发生的事情有什么想法吗?

amazon-s3 aws-sdk

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

我如何使用协议分配NSMutableArray?

这是一个新手问题.我有一个看起来像下面的对象(例如MyObject.h).

#import <Foundation/Foundation.h>
#import "JSONModel.h"
@protocol MyObject
@end
@interface MyObject : JSONModel
@property (strong,nonatomic) NSString* name;
@end
Run Code Online (Sandbox Code Playgroud)

实现如下(例如MyObject.m).

#import "MyObject.h"
@implementation MyObject
@end
Run Code Online (Sandbox Code Playgroud)

在我的其他地方的代码中,我然后定义NSMutableArray如下.

NSMutableArray<MyObject>* list;
list = [[NSMutableArray alloc] init];
Run Code Online (Sandbox Code Playgroud)

我收到了这个警告.

不兼容的指针类型从'NSMutableArray ' 分配'NSMutableArray <MyObject> '

我知道泛型不支持Objective-C开箱即用(这也不是我在这里要做的),但我NSMutableArray的定义是这样的协议,MyObject因为我试图关注"JSONModel"的GitHub页面中的示例.

代码仍在编译,但上面有警告.我如何能

  • 使警告消失,或
  • NSMutableArray正确分配/初始化?

更新:

我继续搜索如何摆脱这个警告,事实证明,如果我创建一个NSMutableArray像下面这样的警告消失(并且项目编译没有错误).我将编写一个单元测试,看它是否按预期工作.

list = (id)[NSMutableArray new];
Run Code Online (Sandbox Code Playgroud)

objective-c ios jsonmodel

0
推荐指数
1
解决办法
729
查看次数

在 for 循环内创建指针会导致指向相同的内存地址

我有一个对象,我试图多次复制该对象,并对该对象进行一些细微的更改。我想将指向那些重复对象的指针存储在std::vector. 我正在使用for循环来尝试实现结果。但是,我注意到的是std::vector<T *>循环退出后指向相同的地址。我试过这种尝试复制对象,std::string我看到了相同的效果。这是我的代码片段。

int main() {
  auto name = new std::string("fido");

  const int size = 3;
  std::vector<std::string *> names;
  names.reserve(size);

  for (int i = 0; i < size; i++) {
    std::string n = *name + " " + std::to_string(i);
    names.push_back(&n);
  }

  // nothing from this loop prints out
  for (auto n : names) {
    std::cout << *n << std::endl;
  }

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我将代码放在调试器中时,我看到它names正在存储指向相同内存地址的指针:0x7ffffffeead0. 关于我在这里做错了什么的任何想法?

我修改了代码以存储一个字符串向量,然后遍历每个字符串,创建一个指向每个字符串地址的指针,如下所示。这种方法也行不通。指针向量仍然指向同一个地址;虽然这一次,他们都指向了最后一个字符串的地址。

int main() …
Run Code Online (Sandbox Code Playgroud)

c++ pointers for-loop c++17

0
推荐指数
1
解决办法
309
查看次数