intervall-operationen

xyz123

Mitglied
Hallo,

ich programmiere gerade ein Programm, das mir anhand von Start- und Endkoordinaten genau die reverse Menge zurückgibt.
Z.B. habe ich eine Menge, die deckt eine Menge von 1-345 ab und ich weiß, dass diese Menge 3256 Charaktäre beinhaltet. Jetzt wäre davon die komplementäre Menge 346-3256.
Anderes Bespiel: eine Menge enthält mehrere Intervalle, z.B. 2-237 und 255-546 und diese Menge enthält nun 7564 Charaktere. Gibt es eine Möglichkeit in Java leicht an diese reverse Menge zu kommen, also 1; 238-345; 547-7564?

Die erste Möglichkeit habe ich gelöst, aber beim zweiten wird's komplizierter und ich wollte mal nachfragen, ob es vielleicht schon irgendwelche Funktionen gibt. Und im Internet habe ich natürlich gesucht, aber nichts gefunden.
Ich sehe langsam den Wald vor lauter Bäumen nicht mehr.

Vielen Dank schon mal für die Hilfe.
 
S

SlaterB

Gast
vieles ist möglich, nur mit Nennung von paar Fakten wird es aber kein Programm, da muss man schon etwas selber tun,
der einfachste Weg wäre einfach nur Rechnen:

> int rest = 3256 - (546-255 +1); usw.
darum gehts dir wohl nicht?

dann gibts die Collections in Java, erstelle ein Set, z.B. ein HashSet mit den 3256 verschiedenen Elementen,
> Set alle = ..;
und davon kannst du andere entfernen, wenn diese auch in einer Collection vorliegen z.B.
> alle.removeAll(einIntervall);
oder wenn du 2-327 nur virtuell als Zahl vorliegen hast z.B. per Schleife:

Java:
for (i ... 2-327) {
  alle.remove(index.getReferenzElement(i));
}
 

André Uhres

Top Contributor
Oder meinst du sowas?
Java:
import java.awt.Point;
import java.util.*;
public class Search {
    public Search() {
        List<Point> list = new ArrayList<Point>();
        list.add(new Point(2, 237));
        list.add(new Point(255, 546));
        int size = 7564;
        List<Point> reverse = search(list, size);
        for (Point point : reverse) {
            System.out.println(point);
        }
    }
    private List<Point> search(final List<Point> list, final int size) {
        List<Point> reverse = new ArrayList<Point>();
        int s = 1;
        for (Point point : list) {
            reverse.add(new Point(s, point.x - 1));
            s = point.y + 1;
        }
        reverse.add(new Point(s, size));
        return reverse;
    }
    public static void main(final String[] args) {
        Search search = new Search();
    }
}
 

xyz123

Mitglied
Ich hab's jetzt noch nicht richtig ausprobiert, aber das von Andre hört sich genau nach dem an, was ich suche.
Vielen Dank!

EDIT:
Ahh, Programm läuft zwar, aber ich die Einträge in der ArrayList<Point> sind nicht sortiert und deswegen krieg ich falsche Ergebnisse.
Kann mir vielleicht jemand helfen, die Liste zu sortieren?
 
Zuletzt bearbeitet:

André Uhres

Top Contributor
Java:
...
        Collections.sort(list, new PointComparator());
...
    private static class PointComparator implements Comparator<Point> {
        public PointComparator() {
        }
        public int compare(final Point o1, final Point o2) {
            if (o1.y < o2.y) {
                return -1;
            }
            if (o1.y > o2.y) {
                return +1;
            }
            if (o1.x < o2.x) {
                return -1;
            }
            if (o1.x > o2.x) {
                return +1;
            }
            return 0;
        }
    }
}
 
S

SlaterB

Gast
nebenbei angemerkt: 5 Stunden nach dem letzten Post noch zu editieren ist sehr mutig,
wer vorher schon reingeschaut hatte wird kaum erneut vorbei kommen,
dann lieber ein Post zuviel als zu wenig
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Methoden Was fehlt mir bzw. muss ich bei der Methode countHarshabNumbers ändern damit ich die Harshad Zahlen im Intervall [51, 79] zählen kann? Allgemeine Java-Themen 19
wolfgang63 Best Practice Taktgeber oder Timer mit variablem Intervall Allgemeine Java-Themen 1
G Anzahl Primzahlen im Intervall Allgemeine Java-Themen 3
S Zahlenwerte in Intervall einschränken Allgemeine Java-Themen 2
X Vector in Intervall-Menge umwandeln Allgemeine Java-Themen 4
J Intervall Partitioning in java Allgemeine Java-Themen 11
R Intervall-Implementierung mit selbstgebauter LinkedList Allgemeine Java-Themen 7
M Intervall Programmieren ? Allgemeine Java-Themen 3
F Operationen/Methoden einen WebService im Browser mit Apache Axis aufrufen Allgemeine Java-Themen 4
lumo 2D-Grafik BufferedImage und operationen darauf Allgemeine Java-Themen 2
L Java Mathe Operationen? Allgemeine Java-Themen 10
O Bit-Operationen Allgemeine Java-Themen 6
N Frage zu atomaren Operationen ohne Locks Allgemeine Java-Themen 3
ARadauer Bit Operationen in der Praxis Allgemeine Java-Themen 18
G File und Directory Operationen Allgemeine Java-Themen 5
P Integer und Bit-operationen Allgemeine Java-Themen 21
T Performance String-Operationen und StringBuffer (1.4und 1.5) Allgemeine Java-Themen 18
G Vectoren Threads, und Multi Operationen Allgemeine Java-Themen 15

Ähnliche Java Themen

Neue Themen


Oben