Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于保存唯一排序的非空字符串的Java集合、集合、映射或数组_Java - Fatal编程技术网

用于保存唯一排序的非空字符串的Java集合、集合、映射或数组

用于保存唯一排序的非空字符串的Java集合、集合、映射或数组,java,Java,我对java相当陌生,希望有一个容器,可以用来保存非空字符串并对其进行排序 到目前为止,我主要使用ArrayList,但对于本例来说,这似乎有点有限 谢谢根据您的要求使用TreeSet或TreeMap。两者都是接受唯一元素并保持其排序的集合。根据您的要求使用TreeSet或TreeMap。两者都是接受唯一元素并保持其排序的集合。集合是您想要的,因为其中的项目必须是唯一的。 因为字符串应该被排序,所以你需要一个树集。 对于非空字符串,您必须覆盖以下插入方法: Set<String> s

我对java相当陌生,希望有一个容器,可以用来保存非空字符串并对其进行排序

到目前为止,我主要使用ArrayList,但对于本例来说,这似乎有点有限


谢谢

根据您的要求使用
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
和apachecommons
StringUtils
得出的结论。我的输入是一个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
和apachecommons
StringUtils
得出的结论。我的输入是一个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也同样有效。