User Tools

Site Tools


java:jfc_algorithms

Αλγόριθμοι

Οι βασικοί αλγόριθμοι του Java Collections Framework υλοποιούνται στις κλάσεις java.util.Collections (για collections) και java.util.Arrays (για πίνακες). Παρακάτω θα δούμε ενδεικτικά παραδείγματα αλγορίθμων από την κλάση java.util.Collections. Ανάλογους αλγορίθμους που εφαρμόζονται σε πίνακες παρέχει και η κλάση java.util.Arrays

  • sorting: (performance NxLog(Ν)).
Sort.java
import java.util.*;
 
public class Sort {
    public static void main(String[] args) {
        List<String> list = Arrays.asList(args);
        Collections.sort(list);
        System.out.println(list);
    }
}
  • shuffling: Ανακατεύει στα στοιχεία της λίστας σε τυχαία σειρά.
Shuffle.java
import java.util.*;
 
public class Shuffle {
    public static void main(String[] args) {
        List<String> list = Arrays.asList(args);
        Collections.shuffle(list);
        System.out.println(list);
    }
}
  • reverse: Αντιστρέφει στα στοιχεία της λίστας.
Reverse.java
import java.util.*;
 
public class Reverse {
    public static void main(String[] args) {
        List<String> list = Arrays.asList(args);
        Collections.reverse(list);
        System.out.println(list);
    }
}
  • fill: Γεμίζει όλα τα στοιχεία της λίστας με ένα συγκεκριμένο στοιχείο.
Fill.java
import java.util.*;
 
public class Fill {
    public static void main(String[] args) {
        List<String> list = Arrays.asList(args);
        System.out.println("List elements before fill: "+list);
        Collections.fill(list,"HelloWorld!");
        System.out.println("List elements after fill: "+list);    
    }
}
  • copy: Αντιγράφει την μία λίστα πάνω στην άλλη. Εάν η λίστα προορισμού έχει περισσότερα στοιχεία από την αρχική λίστα, τα τελευταία στοιχεία της λίστας προορισμού μένουν ως έχουν. Η αρχική λίστα παραμένει αμετάβλητη, επομένως κάθε κοινό στοιχείο πλέον διαθέτει τουλάχιστον δύο δείκτες προς αυτό, έναν δείκτη από την αρχική λίστα και ένα δείκτη από τη λίστα προορισμού.
Copy.java
import java.util.*;
 
public class Copy {
  public static void main(String args[]) {
    // create two lists  
    List<String> srclst = new ArrayList<String>(5);
    List<String> destlst = new ArrayList<String>(10);
 
    // populate two lists
    srclst.add("Java");
    srclst.add("is");
    srclst.add("best");
 
    destlst.add("C++");
    destlst.add("is");
    destlst.add("older");
    destlst.add("and");
    destlst.add("fast!");    
 
    // copy into dest list
    Collections.copy(destlst, srclst);      
 
    System.out.println("Value of source list: "+srclst);
    System.out.println("Value of destination list: "+destlst);
  }
}
  • swap: Αντιμεταθέτει τα στοιχεία μεταξύ δύο θέσεων της λίστας.
Swap.java
import java.util.*;
 
public class Swap {
    public static void main(String[] args) {
        List<String> list = Arrays.asList(args);
        System.out.println("List elements before swap: "+list);
        Collections.swap(list, 0, 2);
        System.out.println("List elements after swap: "+list);    
    }
}
  • addAll: Προσθέτει επιπλέον στοιχεία στη λίστα
addAll.java
import java.util.*;
 
public class AddAll {
    public static void main(String[] args) {
        List<String> list = Arrays.asList(args);
        Collections.addAll(list, "how", "are", "you?");
        System.out.println(list);    
    }
}
  • frequency: Δηλώνει πόσες φορές εμφανίζεται ένα στοιχείο στην λίστα.
Frequency.java
import java.util.*;
 
public class Frequency {
    public static void main(String[] args) {
        List<String> list = Arrays.asList(args);
        int testFreq = Collections.frequency(list, "test");
        System.out.println("\"test\" appears "+testFreq+" times");
    }
}
  • min: Επιστρέφει το ελάχιστο στοιχείο.
  • max: Επιστρέφει το μέγιστο στοιχείο.
MinMax.java
import java.util.*;
 
public class MinMax {
    public static void main(String[] args) {
        List<String> list = Arrays.asList(args);
 
        System.out.println("Min value: "+Collections.min(list,null)+" | Max value: "+Collections.max(list,null) );
    }
}
Προηγούμενο: SortedSet και SortedMap Περιεχόμενα Επόμενο: java
java/jfc_algorithms.txt · Last modified: 2020/03/17 06:27 by gthanos