我是java的新手,我对这个问题很困惑。 这就是我到目前为止所提出的。 我还在努力,如果我想出任何进展,我会在这里发布。
public class charArray {
public static void main(String[] args) {
String[] strArray = new String[] {"apple", "ball", "cat", "apple", "ball", "apple"};
//output should be ["apple", "ball"]
checkDuplicate(strArray);
}
public static String[] checkDuplicate(String[] strArray){
String[] newArray = new String[]{};
for(int i = 0; i < strArray.length; i++){
for(int j = 0; j < i; j++){
if (strArray[i].equals(srtArray[j])){
newArray = strArray[i];
}
}
}
return newArray[];
}
}
新进展: 好吧,我平庸的头脑走了这么远:(解决方案有效) 它打印出Duplicate元素的唯一数组。 但现在我需要通过调用方法来实现相同的代码。 任何帮助表示赞赏。
import java.util.*;
public class setChar {
public static void main(String[] args) {
String[] strArray = new String[] {"apple", "ball", "cat", "apple", "ball", "apple"};
Set set = new HashSet();
Set uniqueSet = new HashSet();
for(int i = 0; i < strArray.length ; i++ ){
boolean b = set.add(strArray[i]);
if(b == false){
uniqueSet.add(strArray[i]);
}
}
Iterator it = uniqueSet.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
}
}
输出是: 的球 苹果
最后用方法实现,具有正确的返回类型。 如果可以进一步优化,请告诉我。 谢谢大家的建议。这是工作代码:
public class retUnique {
public static void main(String[] args) {
String[] strArray = new String[] {"apple", "ball", "cat", "apple", "ball", "apple"};
System.out.println(printUnique(strArray));
}
public static Set<String> printUnique(String[] strArray){
Set<String> set = new HashSet<String>();
Set<String> uniqueSet = new HashSet<String>();
for(int i = 0; i < strArray.length ; i++ ){
boolean b = set.add(strArray[i]);
if(b == false){
uniqueSet.add(strArray[i]);
}
}
return(uniqueSet);
}
}
答案 0 :(得分:1)
一个简单的选择是使用Set
like container而不是数组。它将自动确保仅存在唯一值。
答案 1 :(得分:1)
我相信这样的事情应该有用。我用Java编写代码已经有一段时间了,所以如果有人想编辑,请做。
public String[] returnDups(String[] strArray) {
Set<String> set = new HashSet<String>(strArray);
return set.toArray(new String[0]);
}
但是每个人都在暗示的是正确的想法。集合可以很容易地删除重复项,因此您应该使用它们。我们不要重新发明轮子。
答案 2 :(得分:0)
要检测dupplicates,如果这是你的问题,将数组的所有元素添加到Set,如果set.add()返回false,那么它是一个dupplicate,所以你可以将这个元素添加到dupplictes的结果列表中。
或者,如果您的问题意味着返回没有重复的值,那么您可以重新设置,或者在返回之前将设置转换为列表。