Java 唯一字数组

Java 唯一字数组,java,arrays,split,Java,Arrays,Split,所以,我有一个句子,我用分裂函数把它变成一个单词数组。 现在(这就是我需要帮助的地方)我想循环这个数组,并将句子中的每个单独的、唯一的单词添加到第二个数组中,这对于我这个初学者来说是很困难的。任何能让我走上正轨的解决方案或提示都将不胜感激 (我知道这个问题可能看起来很愚蠢,但我重申,我是一个初学者,所以对我放松点) 谢谢:)这是一个简洁的单行程序,可以满足您的需要,其中单词是初始数组: String[] uniqueWords = Arrays.stream(words).distinct().

所以,我有一个句子,我用分裂函数把它变成一个单词数组。 现在(这就是我需要帮助的地方)我想循环这个数组,并将句子中的每个单独的、唯一的单词添加到第二个数组中,这对于我这个初学者来说是很困难的。任何能让我走上正轨的解决方案或提示都将不胜感激

(我知道这个问题可能看起来很愚蠢,但我重申,我是一个初学者,所以对我放松点)


谢谢:)

这是一个简洁的单行程序,可以满足您的需要,其中
单词
是初始数组:

String[] uniqueWords = Arrays.stream(words).distinct().toArray(String[]::new);
您还可以制作一个简单的函数来实现这一点。比如:

static String[] getUniqueWords(String[] words) {
    ArrayList<String> uniqueWords = new ArrayList<>();

    for (String word : words) {
        if (!uniqueWords.contains(word)) {
            uniqueWords.add(word);
        }
    }

    return uniqueWords.toArray(new String[0]);
}
ArrayList<String> uniqueWords = new ArrayList<String>(allWords.length);
Set<String> track = new HashSet<>();
for (String word : allWords) {
    if (!track.contains(word)) {
        uniqueWords.add(word);
        track.add(word);
    }
}
return uniqueWords.toArray();
static String[]getUniqueWords(String[]words){
ArrayList uniqueWords=新ArrayList();
for(字符串字:字){
如果(!uniqueWords.contains(word)){
添加(单词);
}
}
返回uniqueWords.toArray(新字符串[0]);
}

这里有一个简洁的单行程序,可以满足您的需要,其中
单词
是初始数组:

String[] uniqueWords = Arrays.stream(words).distinct().toArray(String[]::new);
您还可以制作一个简单的函数来实现这一点。比如:

static String[] getUniqueWords(String[] words) {
    ArrayList<String> uniqueWords = new ArrayList<>();

    for (String word : words) {
        if (!uniqueWords.contains(word)) {
            uniqueWords.add(word);
        }
    }

    return uniqueWords.toArray(new String[0]);
}
ArrayList<String> uniqueWords = new ArrayList<String>(allWords.length);
Set<String> track = new HashSet<>();
for (String word : allWords) {
    if (!track.contains(word)) {
        uniqueWords.add(word);
        track.add(word);
    }
}
return uniqueWords.toArray();
static String[]getUniqueWords(String[]words){
ArrayList uniqueWords=新ArrayList();
for(字符串字:字){
如果(!uniqueWords.contains(word)){
添加(单词);
}
}
返回uniqueWords.toArray(新字符串[0]);
}

我的手机上有Im,因此我无法提供代码示例,但我可以向您发送正确的方向


你将有一个第一个循环(我们称之为loopA),它将遍历包含原始句子单词的数组。对于该数组中的每个元素,都有一个“如果”,用于检查数组中的当前单词是否存在于第二个元素中。如果是,跳转并继续循环,如果不是,将单词添加到第二个数组(array2[i]=array1[i])。要查看array2是否包含当前单词,可以使用第二个循环来验证这一点。祝你好运:)

我的手机上有即时消息,因此我无法提供代码示例,但我可以向你发送正确的方向


你将有一个第一个循环(我们称之为loopA),它将遍历包含原始句子单词的数组。对于该数组中的每个元素,都有一个“如果”,用于检查数组中的当前单词是否存在于第二个元素中。如果是,跳转并继续循环,如果不是,将单词添加到第二个数组(array2[i]=array1[i])。要查看array2是否包含当前单词,可以使用第二个循环来验证这一点。祝其余部分好运:)

您应该使用这样的哈希集

Set mySet = new HashSet();
for (int i=0;i<array.length;i++)
    mySet.add(array[i]);

您应该使用这样的哈希集

Set mySet = new HashSet();
for (int i=0;i<array.length;i++)
    mySet.add(array[i]);

不要使用数组。使用
集合
。这将确保只使用唯一的单词,而无需担心逻辑

String original = "This sentence has has some duplicate words words on purpose and it has some extra words as well";
String[] words = original.toLowerCase().split(" ");
Set<String> uniqueWords = new HashSet<>();
uniqueWords.addAll(Arrays.asList(words));

for (String word : uniqueWords) {
    System.out.println(word);
}
String original=“这个句子故意有一些重复的单词,也有一些额外的单词”;
String[]words=original.toLowerCase().split(“”);
Set uniqueWords=new HashSet();
uniqueWords.addAll(Arrays.asList(words));
for(字符串字:唯一字){
System.out.println(word);
}
由于如果同一个单词有不同的大小写,这将添加两次,因此可以使用
toLowerCase()
toUpperCase()
使它们都有相同的大小写


此外,标点符号可以使它看起来像一个不同的单词(例如句子末尾的句点),因此在将
字符串拆分为数组时,一定要删除任何标点。

不要使用数组。使用
集合
。这将确保只使用唯一的单词,而无需担心逻辑

String original = "This sentence has has some duplicate words words on purpose and it has some extra words as well";
String[] words = original.toLowerCase().split(" ");
Set<String> uniqueWords = new HashSet<>();
uniqueWords.addAll(Arrays.asList(words));

for (String word : uniqueWords) {
    System.out.println(word);
}
String original=“这个句子故意有一些重复的单词,也有一些额外的单词”;
String[]words=original.toLowerCase().split(“”);
Set uniqueWords=new HashSet();
uniqueWords.addAll(Arrays.asList(words));
for(字符串字:唯一字){
System.out.println(word);
}
由于如果同一个单词有不同的大小写,这将添加两次,因此可以使用
toLowerCase()
toUpperCase()
使它们都有相同的大小写


此外,标点符号可以使它看起来像一个不同的单词(例如句子末尾的句点),因此在将
字符串拆分为数组时,一定要删除任何标点。

如果您不需要维持秩序,您的职责很简单:

String[] uniqueWords = new HashSet<>(Arrays.asList(allWords)).toArray(new String[0]);
String[]uniqueWords=newhashset(Arrays.asList(allWords)).toArray(newstring[0]);
如果您需要维持秩序,您可以执行以下操作:

static String[] getUniqueWords(String[] words) {
    ArrayList<String> uniqueWords = new ArrayList<>();

    for (String word : words) {
        if (!uniqueWords.contains(word)) {
            uniqueWords.add(word);
        }
    }

    return uniqueWords.toArray(new String[0]);
}
ArrayList<String> uniqueWords = new ArrayList<String>(allWords.length);
Set<String> track = new HashSet<>();
for (String word : allWords) {
    if (!track.contains(word)) {
        uniqueWords.add(word);
        track.add(word);
    }
}
return uniqueWords.toArray();
arraylistuniquewords=新的ArrayList(allWords.length);
Set track=newhashset();
for(字符串字:allWords){
如果(!track.contains(word)){
添加(单词);
track.add(word);
}
}
返回uniqueWords.toArray();

还有其他一些不那么简单、性能稍好的方法来做你的事情,例如将单词保存在trie中等。

如果你不需要维持秩序,你的职责很简单:

String[] uniqueWords = new HashSet<>(Arrays.asList(allWords)).toArray(new String[0]);
String[]uniqueWords=newhashset(Arrays.asList(allWords)).toArray(newstring[0]);
如果您需要维持秩序,您可以执行以下操作:

static String[] getUniqueWords(String[] words) {
    ArrayList<String> uniqueWords = new ArrayList<>();

    for (String word : words) {
        if (!uniqueWords.contains(word)) {
            uniqueWords.add(word);
        }
    }

    return uniqueWords.toArray(new String[0]);
}
ArrayList<String> uniqueWords = new ArrayList<String>(allWords.length);
Set<String> track = new HashSet<>();
for (String word : allWords) {
    if (!track.contains(word)) {
        uniqueWords.add(word);
        track.add(word);
    }
}
return uniqueWords.toArray();
arraylistuniquewords=新的ArrayList(allWords.length);
Set track=newhashset();
for(字符串字:allWords){
如果(!track.contains(word)){
添加(单词);
track.add(word);
}
}
返回uniqueWords.toArray();

还有其他一些不那么简单、性能稍好的方法来做你的事情,比如把单词放在书里,等等。

如果你有“我爱苹果”这句话的话。你想把“我爱苹果”这个词放在第二排吗?我觉得这个问题太宽泛了,看起来像是“你能帮我做作业吗?”。您应该指定问题的哪一部分,然后我们可以讨论。如果您