我有一张地图
map.put("100_101","lll")
map.put("100_102","lll")
map.put("100_101_103","lll")
map.put("100_101_104","lll")
map.put("100","lll")
预期结果是按下划线出现的映射键数排序。
map.put("100","lll")
map.put("100_101","lll")
map.put("100_102","lll")
map.put("100_101_103","lll")
map.put("100_101_104","lll")
答案 0 :(得分:0)
Java 7根据docs在数字文字中允许下划线(“_”)。 可以在这里使用TreeMap,地图根据其键的自然顺序进行排序
TreeMap<Integer, String> map = new TreeMap<>();
map.put(100_101,"lll");
map.put(100_102,"lll");
map.put(100_101_103,"lll");
map.put(100_101_104,"lll");
map.put(100,"lll");
for(Entry<Integer,String> entry : map.entrySet()) {
Integer key = entry.getKey();
String value = entry.getValue();
System.out.println(key + " => " + value);
}
这可以胜任!
答案 1 :(得分:0)
树图根据其键的自然顺序排序。所以你可以使用TreeMap<String>
。找到这个link
如果您使用HashMap<String>
,则可以执行以下操作
按排序顺序获取所有密钥,如下所示
Set<String> sortedKeys = new TreeSet<>(map.keySet());
或
List<String> sortedKeys=new ArrayList<>(map.keySet());
Collections.sort(sortedKeys);
然后遍历此Set或List并从Map获取值并打印。
答案 2 :(得分:0)
使用SortedMap&amp; TreeMap的
您的代码应该是这样的:
SortedMap<String, String> map = new TreeMap<>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if(o1.length()==o2.length()&&o1.contains("_")&&o1.contains("_"))
{
String temp1,temp2;
temp1=o1.substring(o1.lastIndexOf("_"));
temp2=o2.substring(o2.lastIndexOf("_"));
return temp1.compareTo(temp2);
}
else if(o1.length()>o2.length())
{
return 1;
}
else if(o1.length()<o2.length())
{
return -1;
}
return o1.compareTo(o2);
}
});
map.put("100_101","lll");
map.put("100_102","lll");
map.put("100_101_103","lll");
map.put("100_101_104","lll");
map.put("100","lll");
System.out.println(map);
答案 3 :(得分:0)
此处尝试此操作,因为我可以看到您要根据import { UsernameService } from './username.service';
import { Injectable, OnInit } from '@angular/core';
import 'rxjs/Rx';
@Injectable()
export class AnotherService {
username: any[] = [];
constructor(private getUsernameService: UsernameService) { }
someMethod() {
let myFinalValue = this.getUsernameService.getUsername()
.subscribe(username => this.username = username.data[0].AccountName);
console.log(myFinalValue);
}
}
的最后Integer
进行排序,例如根据String
要排序的100_101
。您需要实现101
来满足此要求。这是代码:
comparator