我正在尝试使用以下几行来匹配两个字符串
int row = 1;
String index = row + ",(.*)";
String R = "1,2";
Object result = index.equals(R);
当我希望它为true时结果为false。我不能使用其他方法link .matches(),甚至不能使用索引的模式对象,因为我希望它与使用Hashmap的其他方法集成。
在地图中,键(字符串)将具有索引链接(1,2),(1,3),(2,3),...。我想从第一个数字(即1,2等)搜索它们上。
谢谢。
答案 0 :(得分:3)
您无法更改String.equals()
的行为。如果您坚持要获得true
,请使用:
Object result = !index.equals(R);
答案 1 :(得分:0)
应该是
boolean result = R.matches(index);
或
boolean result = R.startsWith(row + ",");
现在HashMap没有排序键,但是有一个Map也是SortedMap,即TreeMap:
代替
Map<String, T> map = new HashMap<>();
做
SortedMap<String, T> map = new TreeMap<>();
与"1," < "12,"
一样,假设',' < '0'
的标准String比较就足够了。
然后可以连续接收sub-map:
String firstKey = row + ",";
String lastKey = row + "/"; // As '/' > ','
SortedMap submap = map.subMap(firstKey, lastKey);
此子地图由原始地图支持,也就是说,对其进行更改将更改地图。
应该说,这些键看起来有些虚假,也许行+ RowKey类中的另一个字段,或者Map<Integer, Map<String, T>>
(首先是行映射)会更有意义。