Java 如何将句子中的单词输入到唯一列表中

Java 如何将句子中的单词输入到唯一列表中,java,Java,大家好,也许你们可以帮忙。这是我的问题 例如:“我每次都带着我的狗和妹妹到处跑” 我想要一个包含上述句子中所有独特单词的列表: 列表数据={I,am,running,all,over,the,time,every,with,my,dog,and,sister} 我已经试过下面的代码,但它运行速度慢,有很多句子 List textList = new ArrayList(); StringTokenizer stringTokenizer = new StringTokenizer(tex

大家好,也许你们可以帮忙。这是我的问题

例如:“我每次都带着我的狗和妹妹到处跑”

我想要一个包含上述句子中所有独特单词的列表:

列表数据={I,am,running,all,over,the,time,every,with,my,dog,and,sister}

我已经试过下面的代码,但它运行速度慢,有很多句子

List textList = new ArrayList();
    StringTokenizer stringTokenizer = new StringTokenizer(text);

    while (stringTokenizer.hasMoreElements()) {
        String tokenData = (String) stringTokenizer.nextElement();
        if ((textList.size() > 0)) {
            Boolean exist = false;
            for (int i = 0; i < textList.size(); i++) {
                if (tokenData.toLowerCase().equals(
                        textList.get(i).toString().toLowerCase()))
                    exist = true;
            }
            if (exist == false)
                textList.add(tokenData);
        } else {
            textList.add(tokenData);
        }

    }
List textList=new ArrayList();
StringTokenizer StringTokenizer=新的StringTokenizer(文本);
while(stringTokenizer.hasMoreElements()){
String tokenData=(String)stringTokenizer.nextElement();
如果((textList.size()>0)){
布尔存在=假;
对于(int i=0;i

除此之外,还有其他更快的方法,但结果相同。非常感谢您的回复,请使用套装。这样,您每次只需添加单词,而无需检查重复项,因为集合不允许重复项。

您可以使用,它不包含重复项

如果要将其转换为列表,只需执行以下操作:

List<String> listVersion = new ArrayList<String>(mySet);
List listVersion=new ArrayList(mySet);
试试这个:

  • 通过按空格拆分字符串来创建数组
  • 从该数组创建一个列表
  • 从该列表中创建一个集合以删除重复项
  • Set data=newhashset(Arrays.asList(yourString.split(“”))

    Set data=newhashset(Arrays.asList(yourString.split(“”))


    再次从此集合创建一个列表,该列表将作为结果。

    用空格(“”)分隔句子,并将其存储在集合(集合)中。 使用split()函数。 因为集合只能存储唯一的元素,所以您将去掉多余的单词

    String str  = "I am running all over the time every time with my dog and my sister" ;
    String delim = "";
    String[] splits = str.split(delim);
    
    Set uniqWords=new HashSet();
    StringTokenizer StringTokenizer=新的StringTokenizer(文本);
    while(stringTokenizer.hasMoreElements()){
    String tokenData=(String)stringTokenizer.nextElement();
    add(tokenData.toLowerCase());
    }
    //现在您可以将单词作为数组检索
    //uniqWords.toarray();
    
    试试这段代码

    String data = "I am running all over the time every time with my dog and my sister";
    String[] arr = data.split(" ");
    
    Set<String> st = new HashSet<String>();
    
    st.addAll(Arrays.asList(arr));
    
    String data=“我每次都和我的狗和妹妹一起跑步”;
    字符串[]arr=data.split(“”);
    Set st=新的HashSet();
    st.addAll(Arrays.asList(arr));
    

    Set只允许唯一值,并将忽略重复值。

    在最坏的情况下,代码的时间复杂度至少为O(n*n)。除了标准的Java Set版本解决方案外,您还可以尝试1)通过按空格拆分字符串来创建数组,2)对数组进行排序,3)删除重复的元素。

    能否提供一个您尝试过的“大句子”示例?你运行它花了多长时间?+1要获得更详细的答案,我建议使用泛型。也许你应该在拆分之前使用
    toLowerCase
    。因为OP(@Carlo)似乎需要一个不区分大小写的集合。或者使用
    TreeSet(字符串.不区分大小写\u顺序)
    而不是HashSet
    String data = "I am running all over the time every time with my dog and my sister";
    String[] arr = data.split(" ");
    
    Set<String> st = new HashSet<String>();
    
    st.addAll(Arrays.asList(arr));