java – substring的替代方案
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – substring的替代方案,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1804字,纯文字阅读大概需要3分钟。
内容图文
![java – substring的替代方案](/upload/InfoBanner/zyjiaocheng/784/81f7d41318004593bb9af233d9fe0f1d.jpg)
将值添加到String数组时会出现一个奇怪的问题,该数组后来使用哈希映射进行数组排序.我有一个文件名XFR900a,并使用以下代码将XFR900部分添加到数组中;
private ArrayList<String> Types = new ArrayList<String>();
...
Types.add(name.substring(0,(name.length() - 1));
System.out.println(name.substring(0,(name.length() - 1));
我甚至打印出了“XFR900”的行,但是当我使用下面的代码时,后来的数组排序表现不同;
Types.add("XFR900");
System.out.println(name.substring(0,(name.length() - 1));
这只是手动完成的子串部分,非常混乱.
是否有任何好的替代子串,因为那里必须有一些奇怪的非ascii字符?
菲尔
UPDATE
谢谢大家的评论.以下是一些后来比较字符串的代码;
for (int i=0;i< matchedArray.size();i++){
//run through the arrays
if (last == matchedArray.get(i)) {
//add arrays to a data array
ArrayList data = new ArrayList();
data.add(matchedArray1.get(i));
data.add(matchedArray2.get(i));
data.add(matchedArray3.get(i));
data.add(matchedArray4.get(i));
data.add(matchedArray5.get(i));
//put into hash map
map.put(matchedArray.get(i), data);
}
else {
//TODO
System.out.println("DO NOT MATCH :" + last + "-" + matchedArray.get(i));
正如你所看到的,我添加了一个测试System.out.println(“DO NOT MATCH”……以下是一些输出;
不匹配:FR99-XFR900
不匹配:XFR900-XFR900
我只在XFR900a文件名上运行子字符串.问题是最后要打印的测试线!= matchedArray.get(i)然而,当打印到显示器时它们是相同的.
菲尔
解决方法:
您永远不应该使用==运算符来比较字符串的内容. ==检查它是否是同一个对象.写last.equals(matchedArray.get(i))代替. equals()方法检查对象是否相等,而不是它们是否相同.在String的情况下,它检查两个字符串是否由相同的字符组成.这可能会消除你的奇怪行为.
PS:==对字符串的行为有点不可预测,因为java虚拟机做了一些优化.如果两个字符串相等,则jvm可能为两者使用相同的对象.这是可能的,因为String对象无论如何都是不可变的.如果您手动记下子字符串,这将解释行为上的差异.在一种情况下,jvm优化,而另一种情况则不优化.
内容总结
以上是互联网集市为您收集整理的java – substring的替代方案全部内容,希望文章能够帮你解决java – substring的替代方案所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。