在Java中,这是从集合中按键排序的最有效方法吗?

在Java中,这是从集合中按键排序的最有效方法吗?,java,android,sorting,set,Java,Android,Sorting,Set,有没有更有效的方法来实现这一结果。基本上,我想先看看部分中最长的getContextPath()值 enum部分{ 提供商(“提供商”、“com.app.Provider”), 容器(“容器”、“com.app”); /** *这一部分的关键。 */ 私钥; /** *此节的上下文路径。 */ 私有字符串上下文路径; /** *创建一个新的部分。 * *@param key此节的键。 *@param contextPath此节的上下文路径。 */ 节(字符串键、字符串上下文路径){ this.k

有没有更有效的方法来实现这一结果。基本上,我想先看看
部分
中最长的
getContextPath()

enum部分{
提供商(“提供商”、“com.app.Provider”),
容器(“容器”、“com.app”);
/**
*这一部分的关键。
*/
私钥;
/**
*此节的上下文路径。
*/
私有字符串上下文路径;
/**
*创建一个新的部分。
*
*@param key此节的键。
*@param contextPath此节的上下文路径。
*/
节(字符串键、字符串上下文路径){
this.key=key;
this.contextPath=contextPath;
}
/**
*检索此节的字符串表示形式。
*
*@返回字符串值。
*/
@SuppressWarnings(“NullableProblems”)
@凌驾
公共字符串toString(){
返回此.key;
}
/**
*检索此节的上下文路径。
*
*@返回上下文路径。
*/
公共字符串getContextPath()
{
返回this.contextPath;
}
}
//请记住,这些可能是动态加载的,但不会总是这样
//像这样静态加载。
private static final Map sectionLoggerIds=new HashMap(){{
放置(部分容器,“some.id”);
put(Section.Provider,“some.other.id”);
}};
/**
*根据上下文检索记录器。
*
*@param context是上下文。
*@返回记录器
*/
公共静态记录器(上下文){
//创建一个树集对值进行排序,并进行设置
//先把它们分类。
Set sectionSet=新树集(新比较器(){
@凌驾
公共整数比较(第1节、第2节){
返回整数。比较(
Section 2.getContextPath().length(),
section1.getContextPath().length()
);
}
});
//添加所有相关的节对象。
sectionSet.addAll(sectionLoggerIds.keySet());
//搜索部分,从最长的部分开始
//上下文路径优先。
用于(截面:截面集){
if(context.getClass().getName().contains(section.getContextPath())){
返回getLogger(sectionLoggerIds.get(section));
}
}
返回null;
}

不太清楚您的问题是什么。您是否询问在
compare
方法中颠倒
section2
section1
的顺序是否是使
TreeSet
首先按最长字符串自然排序的适当方法?如果是这样,我建议你更明确地问这个问题。我建议您对代码进行注释,以解释这种逻辑。可能相关:@Basil Borque我想问的是,这是否是实现
logger
函数所实现结果的最有效方法。您正在对两个值进行排序。你为什么关心效率?我不认为你能做任何糟糕的事情,以至于你能注意到任何性能差异。“高效”对你来说具体意味着什么?不太清楚你的问题是什么。您是否询问在
compare
方法中颠倒
section2
section1
的顺序是否是使
TreeSet
首先按最长字符串自然排序的适当方法?如果是这样,我建议你更明确地问这个问题。我建议您对代码进行注释,以解释这种逻辑。可能相关:@Basil Borque我想问的是,这是否是实现
logger
函数所实现结果的最有效方法。您正在对两个值进行排序。你为什么关心效率?我不认为你能做任何如此糟糕的事情,以至于你能注意到任何性能差异。“高效”对你来说具体意味着什么?