【发布时间】:2012-12-05 04:15:49
【问题描述】:
我是 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);
}
}
【问题讨论】:
-
可以尝试使用 LinkedHashSet(我相信是这样吗?),即使您添加多个相同的条目,它也只允许唯一的条目。
-
你希望 ro 返回什么,唯一的词,还是重复的?
-
AlexWien - 我必须只返回重复单词的唯一单词。
-
感谢李的链接。但问题不一样。在您发布的链接上,正在整理列表的独特元素。但就我而言,我需要一个独特的元素列表,即重复。并非列表中的所有元素。好吧,我已经发布了一个解决方案,请看看是否可以对其进行优化,并在方法中实现。
标签: java arrays duplicates