2013-05-16 3 views
0

TreeSet에서 중복 된 것을 사용하고 중복 된 내용을 출력하는 방법은 무엇입니까?해당 TreeSet의 복사본을 사용하여 중복 된 내용을 인쇄하십시오.

텍스트 파일과 중복되지 않는 배열을 채울 수있는 메서드를 만들었으므로 이제 해당 파일을 다른 파일에 붙여 넣을 필요가 있습니다. 어떻게해야합니까? TreeSet 또는 Set에 추가하는 동안

// method that gets that reads the file and puts it in to an array 
public static void readFromfile() throws IOException { 
    // Open the file. 
    File file = new File("file.txt"); 
    Scanner inputFile = new Scanner(file); 

    // create a new array set Integer list 
    Set<Integer> set = new TreeSet<Integer>(); 
    // add the numbers to the list 
    while (inputFile.hasNextInt()) { 
     set.add(inputFile.nextInt()); 
    } 
    // transform the Set list in to an array 
    Integer[] numbersInteger = set.toArray(new Integer[set.size()]); 

    // loop that print out the array 
    for (int i = 0; i < numbersInteger.length; i++) { 
     System.out.println(numbersInteger[i]); 
    } 

    // close the input stream 
    inputFile.close(); 
} 
+1

를 사용하여 코드 블록에 대한 일관되고 논리적 들여 쓰기를. 코드의 들여 쓰기는 사람들이 프로그램 흐름을 이해하도록 돕기위한 것입니다! –

+2

'set.add (inputFile.nextInt()); '의 반환 값을 사용한다. –

답변

2
List<Integer> duplicates = new ArrayList<Integer>(); 
     Set<Integer> set = new TreeSet<Integer>(); 
     // add the numbers to the list 
     while (inputFile.hasNextInt()) { 
      Integer it = inputFile.nextInt(); 
      if (set.contains(it)) { 
       duplicates.add(it); // adding duplicates which is already present in Set 
      } else { 
       set.add(it); // if not present in set add to Set 
      } 
     } 

// loop ArrayList print duplicates values 
+0

이것 역시 효과적이다 :'if (! set.add (it)) {duplicates.add (it); }' –

4

당신은 중복을 수집 할 수 있습니다

List<Integer> dups = new ArrayList<Integer>(); 
     Set<Integer> noDups= new TreeSet<Integer>(); 
int i; 
     while (inputFile.hasNextInt()) { 
     { 
      if(!noDups.add(i=inputFile.nextInt())) 
       dups.add(i); 
     } 
+0

무엇이 the (i) ?? –

+0

@WagnerMaximiliano 그것은'nextInt'입니다. – harsh