Java Set接口的API 指出:
例如,某些实现禁止
null
元素,而某些实现对其元素的类型有限制
我正在寻找一个基本的Set实现,它不需要排序(如ArrayList为List接口提供)并且不允许null
.TreeSet,HashSet和LinkedHashSet都允许null元素.另外,TreeSet要求元素实现Comparable.
目前似乎没有这样的基本Set
存在.有谁知道为什么?或者,如果确实存在,我可以找到它?
[编辑]:我不想允许null
s,因为稍后在代码中我的类将迭代集合中的所有元素并调用特定方法.(我实际上正在使用HashSet<MyRandomObject
>).我宁愿快速失败而不是失败,或者由于null
在集合中而意外地产生一些奇怪的行为.
我的测试运行没有问题,突然出现以下警告:
MiniTest::Unit::TestCase is now Minitest::Test
Run Code Online (Sandbox Code Playgroud)
这在以下库中报告:
ruby-1.9.3-p392/lib/ruby/1.9.1/test/unit/testcase.rb:8:in `<module:Unit>'
gems/activesupport-3.2.12/lib/active_support/test_case.rb:12:in `<module:ActiveSupport>'
gems/activesupport-3.2.12/lib/active_support/descendants_tracker.rb:34:in `inherited'
Run Code Online (Sandbox Code Playgroud)
我不知道是什么促使出现这些警告.有人知道我能做些什么来消除警告吗?
即使有警告,测试仍然可以正常运行.
我的Rails环境是3.2.12,在OSX 10.8.4上运行.
谢谢!
假设我们有以下数组$myArray
要根据 var_export 检查:
array (
0 => AnObject::__set_state(array(
'id' => 10,
'name' => 'foo'
)),
1 => AnObject::__set_state(array(
'id' => 23,
'name' => 'bar'
)),
2 => AnObject::__set_state(array(
'id' => 55,
'name' => 'baz'
)),
)
Run Code Online (Sandbox Code Playgroud)
AnObject
如果该数组包含名称为 的 ,则断言应该通过'bar'
。
我知道如果我知道该AnObject
值的位置,我可以使用:
$this->assertAttributeSame('bar', 'name', $myArray[1]);
Run Code Online (Sandbox Code Playgroud)
是否有某种方法可以使用$this->assertThat()
或另一种类型的 contains 来检查整个数组并返回 true ,其中一个对象具有匹配的属性?
我正在开发一个跟踪一系列任务的内部应用程序.我想要一个简单的任务监视器,列出任务名称和任务的状态.我需要这个看起来有点好看,我不是设计师,所以无论我做什么都会吮吸,但基本的文本显示不适用于项目要求.
我基本上试图做的是显示类似于Firefox下载窗口,I-Tunes下载窗口的东西,我可以更多地命名,但它们看起来基本相同.在每个应用程序中,每个"进度面板"都是可选的.因此,为了实现这一点,我认为只使用一个JPanels列表就很简单,每个JPanels都有一个JProgressBar和一个JLabel,每个JPanel都可以接受焦点来确定是否选择了它.我认为这将是一项简单的任务,但如果我使用JList它只显示文本.然后我想我会在一个更大的面板中显示所有任务面板,但我无法让内部面板识别焦点.
有这种模式吗?是否有我刚刚找不到的滚动标准解决方案?或者有更好的方法吗?我不想重新发明轮子,但我认为这只是简单.