Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Arrays_Duplicates - Fatal编程技术网

如何在java中从数组中删除重复字

如何在java中从数组中删除重复字,java,arrays,duplicates,Java,Arrays,Duplicates,我正在读取一个文件,然后调用一个string[]方法,该方法将行拆分为单个单词,将每个单词添加到一个唯一单词数组(没有重复的单词),并返回唯一单词数组 我不知道如何只打印每个单词一次,但这里是我到目前为止所拥有的 static public String[ ] sortUnique( String [ ] unique, int count) { String temp; for(int i = 1; i < count; i++) { temp = uni

我正在读取一个文件,然后调用一个string[]方法,该方法将行拆分为单个单词,将每个单词添加到一个唯一单词数组(没有重复的单词),并返回唯一单词数组

我不知道如何只打印每个单词一次,但这里是我到目前为止所拥有的

static public String[ ] sortUnique( String [ ] unique, int count)
{
    String temp;
    for(int i = 1; i < count; i++) {
        temp = unique[i].replaceAll("([a-z]+)[,.?]*", "$1");;
        int j;
        for(j = i - 1; j>= 0 && (temp.compareToIgnoreCase(unique[j]) < 0);j--) {
            unique[j+1] = unique[j];
        }
        unique[j+1] = temp;
    }
    return unique;
}

任何帮助都将不胜感激

要读取文件并删除重复字:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.StreamTokenizer;
import java.util.Set;
import java.util.TreeSet;

public class WordReader {

   public static void main( String[] args ) throws Exception {
      BufferedReader br =
         new BufferedReader(
            new FileReader( "F:/docs/Notes/Notes.txt" ));
      Set< String > words = new TreeSet<>();                // {sorted,unique}
      StreamTokenizer st = new StreamTokenizer( br );
      while( st.nextToken() != StreamTokenizer.TT_EOF ) {
         if( st.ttype == StreamTokenizer.TT_WORD ) {
            words.add( st.sval );
         }
      }
      System.out.println( words );
      br.close();
   }
}
导入java.io.BufferedReader;
导入java.io.FileReader;
导入java.io.StreamTokenizer;
导入java.util.Set;
导入java.util.TreeSet;
公共类读字器{
公共静态void main(字符串[]args)引发异常{
缓冲读取器=
新的缓冲读取器(
新的文件阅读器(“F:/docs/Notes/Notes.txt”);
Setwords=newtreeset();//{排序,唯一}
StreamTokenizer st=新的StreamTokenizer(br);
while(st.nextToken()!=StreamTokenizer.TT_EOF){
if(st.ttype==StreamTokenizer.TT\u字){
加上(圣斯瓦尔);
}
}
System.out.println(字);
br.close();
}
}

要读取文件并删除重复的单词:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.StreamTokenizer;
import java.util.Set;
import java.util.TreeSet;

public class WordReader {

   public static void main( String[] args ) throws Exception {
      BufferedReader br =
         new BufferedReader(
            new FileReader( "F:/docs/Notes/Notes.txt" ));
      Set< String > words = new TreeSet<>();                // {sorted,unique}
      StreamTokenizer st = new StreamTokenizer( br );
      while( st.nextToken() != StreamTokenizer.TT_EOF ) {
         if( st.ttype == StreamTokenizer.TT_WORD ) {
            words.add( st.sval );
         }
      }
      System.out.println( words );
      br.close();
   }
}
导入java.io.BufferedReader;
导入java.io.FileReader;
导入java.io.StreamTokenizer;
导入java.util.Set;
导入java.util.TreeSet;
公共类读字器{
公共静态void main(字符串[]args)引发异常{
缓冲读取器=
新的缓冲读取器(
新的文件阅读器(“F:/docs/Notes/Notes.txt”);
Setwords=newtreeset();//{排序,唯一}
StreamTokenizer st=新的StreamTokenizer(br);
while(st.nextToken()!=StreamTokenizer.TT_EOF){
if(st.ttype==StreamTokenizer.TT\u字){
加上(圣斯瓦尔);
}
}
System.out.println(字);
br.close();
}
}

Read将数组转换为一个集合,然后将其转换回一个数组。想法:1)对数组进行排序2)对照下一个项目检查每个项目3)如果
item[i]==item[i+1]
删除重复项。正如@tieTYT所建议的,您应该将数组中的每个单词添加到一个集合中。在Java中,您可以轻松地使用集合库中的一个集合。我建议使用散列集。好的,一旦你比较了单词,你会将非重复项添加到另一个数组并打印出来吗?阅读并将数组转换为一个集合,然后将其转换回一个数组。想法:1)对数组排序2)对照下一个项目检查每个项目3)如果
item[I]==item[I+1]
删除重复项。正如@tieTYT建议的那样,您应该只需将数组中的每个单词添加到集合中。在Java中,您可以轻松地使用集合库中的一个集合。我建议使用散列集。好的,一旦你比较了单词,你会把不重复的添加到另一个数组并打印出来吗?