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();
还有其他一些不那么简单、性能稍好的方法来做你的事情,比如把单词放在书里,等等。如果你有“我爱苹果”这句话的话。你想把“我爱苹果”这个词放在第二排吗?我觉得这个问题太宽泛了,看起来像是“你能帮我做作业吗?”。您应该指定问题的哪一部分,然后我们可以讨论。如果您