我有一个HashSet的byte[]s,我想测试一个新的byte[]是否在该集合中.问题是Java似乎在测试byte[]实例是否相同,而不是测试字节数组中的实际值是否相同.
换句话说,请考虑以下代码:
public class Test
{
public static void main(String[] args)
{
java.util.HashSet<byte[]> set=new java.util.HashSet<byte[]>();
set.add(new String("abc").getBytes());
System.out.println(set.contains(new String("abc").getBytes()));
}
}
Run Code Online (Sandbox Code Playgroud)
这个代码打印出来false,我希望它打印出来true.我应该怎么做呢?
有没有办法让一个模拟类返回一些对象,无论调用该函数的参数是什么?
例如,如果我的某个参数类型没有正确实现.equals()方法.
我的单元测试使用Hibernate连接到内存中的HSQLDB数据库.我希望有一种方法可以在JUnit的TestCase.setUp()方法中清除和重新创建数据库(包括模式和所有数据的整个数据库).
来自其他Web框架,我习惯于能够将URL的一部分映射到方法参数.我知道web.xml提供了一种将整个URL映射到Servlet的方法,但有没有办法从中获取更多功能,例如将URL的各个部分映射到方法参数?
我想知道如何在.net中存储对象的引用.
也就是说,我想要类似下面的代码(注意,当然,以下代码可能与实际操作方式有关):
class Test
{
private /*reference to*/ Object a;
public Test(ref int a)
{
this.a = a;
this.a = ((int)this.a) + 1;
}
public Object getA() { return this.a; }
}
/*
* ...
*/
static void Main(string[] args)
{
int a;
a=3;
Test t = new Test(ref a);
Console.WriteLine(a);
Console.WriteLine(t.getA());
Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud)
要产生以下输出:
4
4
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想在没有围绕整数编写包装类的情况下执行此操作.
换句话说,我想我想要.Net中的指针.
我想通过一个HashSet for (MyClass edg : myHashSet)和里面for,我想删除我的HashSet的元素.
for (MyClass edg : myHashSet)
{
if(....)
myHashSet.remove();
}
Run Code Online (Sandbox Code Playgroud)
但是如果java.util.ConcurrentModificationException在parcour中我如何删除集合中的元素有错误?
对于以下代码:
#include<iostream>
using namespace std;
class A{
public:
virtual int f(){return 1;}
};
class B : public A{
public:
virtual int f(){return 2;}
};
int main(int argc,char*argv[]){
A b=B();
cout<<b.f()<<endl;
}
Run Code Online (Sandbox Code Playgroud)
我希望2打印这个号码.而是程序打印数字1.
有人可以解释为什么会这样吗?