我做了一些调查,以了解如何String.intern()在java中实现该方法.
我从Open JDK 6看了Intern池的C++实现,在那里我看到了一个简单的HashSet.对我而言,这意味着当有人试图实习时String,应该完成下一步:
String intern()方法返回它intern()方法返回很多人说str1.intern() == str2.intern()会比这更快str1.equals(str2).
但我看不出它应该更快的原因.
正如我所见,str1.equals(str2)我们总是有两个字符串比较char String.equals()方法中的char .
在这种情况下str1.intern() == str2.intern(),我们需要进行多少次比较或将字符串放入池中(对吧,它可以进行大量的比较,它们也是char比较的简单char)?
因此,str1.intern() == str2.intern()即使我们使用==比较字符串,我们也会有许多其他操作,例如前面描述的比较.
当我理解它时,我决定做一些基准测试.
第一个结果告诉我str1.intern() == str2.intern()比这更快str1.equals(str2).
此行为是由于该String.intern()方法是本机的,因此不应每次都解释它并且String.equals()是一个java方法.
所以我决定使用-Xcomp选项让JVM在启动时编译所有代码.
在那之后等于比实习生更快的速度.
我在Java 6和7上测试过它.
所以我的问题是你有没有看到在实际比较字符串比较速度增加的情况?我是怎么回事?
或者也许intern()只能帮助节省更多的免费记忆?
我正在实现一个简单的方法来Button以LinearLayout编程方式添加一个.
当我调用setBackground(Drawable background)方法时,Error抛出以下内容:
java.lang.NoSuchMethodError: android.widget.Button.setBackground
我的addNewButton方法:
private void addNewButton(Integer id, String name) {
Button b = new Button(this);
b.setId(id);
b.setText(name);
b.setTextColor(color.white);
b.setBackground(this.getResources().getDrawable(R.drawable.orange_dot));
//llPageIndicator is the Linear Layout.
llPageIndicator.addView(b);
}
Run Code Online (Sandbox Code Playgroud) List<String> strings = Arrays.asList("3","55","3");
Map<String,Integer> map = strings
.stream()
.collect(Collectors.toMap(s ->s, s -> s.length()));
Run Code Online (Sandbox Code Playgroud)
回报
java.lang.IllegalStateException: Duplicate key 1
Run Code Online (Sandbox Code Playgroud)
我希望在哪里复制密钥3
为什么Java在编译my时不会抛出任何警告TestGenerics class,考虑到String class是否final且无法扩展?
import java.util.*;
public class TestGenerics {
public void addStrings(List<? extends String> list) {
// some code here
}
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个Double对象在转换为long值时会丢失确切的值.
Double d = 1.14*100
System.out.println(d.longValue());
Run Code Online (Sandbox Code Playgroud)
上面的陈述将打印:113.
我想要114打印.
谢谢
我正在尝试在Spring boot 2中编写一个测试类,其中:
这个类看起来像:
@RunWith(SpringRunner.class)
@WebMvcTest(MyController.class)
public class MyControllerTest {
@Autowired
private MockMvc mvc;
@MockBean
private MyRepositoryInterface myRepository;
@Autowired
private MyService myService;
// tests follow ...
}
Run Code Online (Sandbox Code Playgroud)
的(唯一)实现MyService带有注释@Service并允许通过其@Autowired构造函数注入存储库:
@Service
public class MyActualService implements MyService {
private MyRepository repo;
@Autowired
public MyActualService(MyRepository repo) {
this.repo = repo;
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
我NoSuchBeanDefinitionException在运行测试时得到了一个,广泛地说“没有MyService可用的”。
我怀疑我可能需要特定的测试配置来获取服务,但我对可用的在线文献感到非常困惑。
任何指针?
我从这种字符串试图提取ou=persons,ou=(.*),dc=company,dc=org立即最后一个字符串前面加一个昏迷后面没有(。*)。在最后一种情况下,应给出dc=company,dc=org。
从正则表达式上看,这似乎是正面的(正面)负面看法(之前)。
因此,我已经实现了此regex:,(?<=(,(?!.*\Q(.*)\E))).*但是它,dc=company,dc=org以昏迷形式返回。我想要同样的东西而没有昏迷。我做错了什么?
我有一个Price包含唯一的Item Id, Mrp, Discount,的对象Seller Price。
有一个公开的 Http Api,给定项目 Id 列表后会返回其数据。现在有两种方法可以做到这一点。例如:如果有人在 上执行 GET A,B,C,则响应:
方法 1:返回价格对象列表:
[
{ "ItemId" : "A",
"Mrp" : 55.0,
"Discount" : 0.0,
"Seller Price" : 55.0
},
{ "ItemId" : "B",
"Mrp" : 100.0,
"Discount" : 10.0,
"Seller Price" : 90.0
},
{ "ItemId" : "C",
"Mrp" : 75.0,
"Discount" : 0.0,
"Seller Price" : 75.0
}
]
Run Code Online (Sandbox Code Playgroud)
方法 2:返回价格对象的映射:
{
"A" :{ "ItemId" : …Run Code Online (Sandbox Code Playgroud) transient在没有实现的类中使用关键字有意义Serializable吗?
因为没有实现的类Serializable仍然可以被ObjectOutputStream.
我需要检查网址(每秒一次)
Timer timer = new Timer();
TimerTask task = new TimerTask() {
public void run()
{
System.out.print(engine.getLocation());
}
};
timer.schedule( task, 1000 );
Run Code Online (Sandbox Code Playgroud)
但我不需要时间表
在JavaScript中它看起来像
var interval = self.setInterval(function(){
console.log(mywindow.location.href);
},1000);
Run Code Online (Sandbox Code Playgroud) java ×8
android ×1
button ×1
exception ×1
generics ×1
http ×1
java-stream ×1
json ×1
regex ×1
rest ×1
serializable ×1
spring ×1
spring-boot ×1
string ×1
transient ×1
web-services ×1