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