我正在考虑从(未排序的)字符串数组中删除重复项的最佳方法 - 该数组包含数百万或数千万字符串.数组已经预先填充,因此优化目标只是删除重复而不是防止重复从最初填充!!
我正在考虑进行排序然后二元搜索以获得log(n)搜索而不是n(线性)搜索.这将给我nlogn + n次搜索,这些搜索除了未排序(n ^ 2)之外的搜索效果更好,但这似乎仍然很慢.(还考虑了散列但不确定吞吐量)
请帮忙!寻找一种解决速度和内存的高效解决方案,因为在不使用Collections API的情况下涉及数百万字符串!
obj下面的操作是否安全?我知道方法级别的变量和实例会在每个线程的堆栈上发生 - 但我不确定当局部变量是单例时会发生什么.在webservice调用中调用foo().我很好奇这是否是线程安全的?
public void foo() {
SomeObject obj = getSomeObject();
obj.doSomething(); // Would this be thread safe?
}
private SomeObject getSomeObject() {
// returns singleton
SpringContext.getBean("someObject");
}
class SomeObject {
int x;
...
// Not synchronized
public void doSomething() {
}
}
Run Code Online (Sandbox Code Playgroud)