用于保存唯一排序的非空字符串的Java集合、集合、映射或数组
我对java相当陌生,希望有一个容器,可以用来保存非空字符串并对其进行排序 到目前为止,我主要使用ArrayList,但对于本例来说,这似乎有点有限用于保存唯一排序的非空字符串的Java集合、集合、映射或数组,java,Java,我对java相当陌生,希望有一个容器,可以用来保存非空字符串并对其进行排序 到目前为止,我主要使用ArrayList,但对于本例来说,这似乎有点有限 谢谢根据您的要求使用TreeSet或TreeMap。两者都是接受唯一元素并保持其排序的集合。根据您的要求使用TreeSet或TreeMap。两者都是接受唯一元素并保持其排序的集合。集合是您想要的,因为其中的项目必须是唯一的。 因为字符串应该被排序,所以你需要一个树集。 对于非空字符串,您必须覆盖以下插入方法: Set<String> s
谢谢根据您的要求使用
TreeSet
或TreeMap
。两者都是接受唯一元素并保持其排序的集合。根据您的要求使用TreeSet
或TreeMap
。两者都是接受唯一元素并保持其排序的集合。集合是您想要的,因为其中的项目必须是唯一的。
因为字符串应该被排序,所以你需要一个树集。
对于非空字符串,您必须覆盖以下插入方法:
Set<String> sortedSetOfStrings = new TreeSet<String>() {
@Override
public boolean add(String s) {
if(s.isEmpty())
return false;
return super.add(s);
}
};
Set sortedSetOfStrings=new TreeSet(){
@凌驾
公共布尔加法(字符串s){
如果(s.isEmpty())
返回false;
返回super.add(s);
}
};
编辑:由于Peter Rader的评论,简化了。一套是您想要的,因为其中的项目必须是唯一的。 因为字符串应该被排序,所以你需要一个树集。 对于非空字符串,您必须覆盖以下插入方法:
Set<String> sortedSetOfStrings = new TreeSet<String>() {
@Override
public boolean add(String s) {
if(s.isEmpty())
return false;
return super.add(s);
}
};
Set sortedSetOfStrings=new TreeSet(){
@凌驾
公共布尔加法(字符串s){
如果(s.isEmpty())
返回false;
返回super.add(s);
}
};
编辑:由于Peter Rader的评论,简化了。感谢所有帮助。下面是我最终通过使用
TreeSet
和apachecommonsStringUtils
得出的结论。我的输入是一个CSV字符串,因此,我没有对输入进行检查
String csvString = "Cat,Dog, Ball, Hedge,, , Ball, Cat"
String[] array = StringUtils.split((String) csvString, ",");
for (int i = 0; i < array.length; i++)
{
array[i] = array[i].trim(); //Remove unwanted whitespace
}
set = new TreeSet<String>(Arrays.asList(array));
set.remove(""); //Remove the one empty string if it is there
String csvString=“猫、狗、球、篱笆、球、猫”
String[]数组=StringUtils.split((String)csvString,“,”);
for(int i=0;i
集合
现在包含:球、猫、狗、树篱
谢谢您的帮助。下面是我最终通过使用TreeSet
和apachecommonsStringUtils
得出的结论。我的输入是一个CSV字符串,因此,我没有对输入进行检查
String csvString = "Cat,Dog, Ball, Hedge,, , Ball, Cat"
String[] array = StringUtils.split((String) csvString, ",");
for (int i = 0; i < array.length; i++)
{
array[i] = array[i].trim(); //Remove unwanted whitespace
}
set = new TreeSet<String>(Arrays.asList(array));
set.remove(""); //Remove the one empty string if it is there
String csvString=“猫、狗、球、篱笆、球、猫”
String[]数组=StringUtils.split((String)csvString,“,”);
for(int i=0;i
集合
现在包含:球、猫、狗、树篱
当然就是树集合?没有建议需要地图。谢谢Luigi。我快速阅读了一遍,我认为TreeSet
适合我。我只需要找出一种方法,要么删除空字符串,要么首先防止它被放在那里。@RobMason如果(!yourString.isEmpty()){set.add(yourString);},您可以使用if(!yourString.isEmpty()){set.add(yourString);}
@Bohemian我倾向于推荐Map
和Set
一起使用,因为您无法从Set
中检索元素。实际上,Map不是集合。毫无疑问。然而,地图是集合框架的一部分。当然只是树集?没有建议需要地图。谢谢Luigi。我快速阅读了一遍,我认为TreeSet
适合我。我只需要找出一种方法,要么删除空字符串,要么首先防止它被放在那里。@RobMason如果(!yourString.isEmpty()){set.add(yourString);},您可以使用if(!yourString.isEmpty()){set.add(yourString);}
@Bohemian我倾向于推荐Map
和Set
一起使用,因为您无法从Set
中检索元素。实际上,Map不是集合。毫无疑问。但是,Map是Collections框架的一部分。像零长度一样为空,像内部只有空格一样为空,或者像Null
一样为空,长度为零,只有空格。我不反对null
像零长度一样空,像里面只有空格一样空,或者像null
一样空,零长度只有空格。正如您所说,我不反对null
。从树集javadoc。构造一个新的空树集,根据其元素的自然顺序进行排序。还是我理解错了?就像你说的。从树集javadoc。构造一个新的空树集,根据其元素的自然顺序进行排序。还是我理解错了?你不需要StringUtils。Java的字符串[]数组=“a,b”。拆分(“,”);这也很好。尽管如此,StringUtils也同样有效。你不需要StringUtils。Java的字符串[]数组=“a,b”。拆分(“,”);这也很好。尽管如此,StringUtils也同样有效。