Arraywerte auslesen und löschen

ankmanu

Bekanntes Mitglied
Hi,

ich habe folgendes Problem:
Ich habe ein Array greenarray_x mit 100 Speicherplätzen. Dieses wird jetzt mit verschiedenen Werten gefüllt, die sich allerdings meistens fast gleichen.
Also zB so:

greenarray_x [1] = 240;
greenarray_x [2] = 239;
greenarray_x [3] = 241;
greenarray_x [4] = 243;

Ab einem zufälligen Speicherplatz(z.B. 20) kommen dann andere ähnliche Werte:

greenarray_x [20] = 430;
greenarray_x [21] = 435;
greenarray_x [22] = 428;
greenarray_x [23] = 434;

Wie kann ich nun immer nur EINEN der ähnlichen Werte weiterverwenden?
Also es müsste folgendes passieren:

Das Programm müsste z.B den 1.Arraywert nehmen (240) und dann überprüfen, ob irgendein anderer Arraywert diesem Wert um +-10 gleicht. (in diesem Fall Arraywert 2,3 und 4)
Alle Werte, die diesem Wert gleichen (um +-10) sollten dann aus dem Array gelöscht werden!
(so dass dann nur noch wert 1 übrig bleibt)
Dann sollte das Programm den nächsten anderen Wert nehmen(also 430) und das selbe tun.

Am Ende sollten dann also 2 Werte übrig bleiben (nämlich 240 und 430)!
Diese Werte würde ich dann nämlich gerne weiterverwenden...

Übrigens sollten alle Werte, die null sind(das kann vorkommen, wenn das array nicht voll gefüllt ist, also z.B nur 90 Speicherplätze beschrieben wurden) sofort gelöscht werden!

Aber wie kann ich das realisieren (also Arraywerte nach ähnlichen überprüfen, arraywerte löschen,...)??

Vielen Dank schon mal

manu
 

Isrok

Mitglied
Moin, ich hätte mal eine frage dazu , was genau meinst du mit Löschen (=null setzen)? Und willst du als Ergebniss nur die Werte haben die glatt durch 10 teilbar sind?
 

ankmanu

Bekanntes Mitglied
naja ich will die werte einfach nicht verwenden, also ich will. am ende mit 2 werten weiterrechnen, und alle anderen(die ähnlich sind) brauch ich eben nicht mehr. (man kann sie also löschen oder einfach nicht verwenden.)
Nur weiß ich eben nicht wie ich das ganze realisieren soll!

Grüße
manu
 

DaveX

Mitglied
Ich würde sowas vorschlagen:

Java:
public static Integer[] cleanArray(int[] values, int abweichung)
{
	List<Integer> filter = new ArrayList<Integer>();
	filter.add(values[0]);
	int tmp = values[0];
	for( int pos = 1 ; pos < values.length; pos++ )
	{
		if( values[pos] < tmp-abweichung || values[pos] > tmp+abweichung )
		{
			tmp = values[pos];
			filter.add(values[pos]);
		}
	}
		
	return filter.toArray(new Integer[filter.size()]);
}


Testen kannst du es mit:

Java:
int[] alleWerte = {231,232,233,234,235,452,451,455,678,679,669}; // array mit initialisierten Werten
Integer[] test = DeinKlassenNamen.cleanArray(alleWerte , 10); // Abweichung +-10
		   
for (Integer gefilterterWert : test) {
	System.out.println(gefilterterWert );
}
 

swingens

Mitglied
Zur Überprüfung würde ich folgendes implementieren:
[Java] for ( int i = 0; i < greenarray_x.length; i++ )
{
for ( int j = 0; j < greenarray_x.length; j++ )
{
if (greenarray_x==greenarray_x[j] && j!=i)
{
//Variable aus dem Array löschen
}
}
}
[/code]
 
Zuletzt bearbeitet:

swingens

Mitglied
Zum rausfiltern würde ich doppelte Einträge einfach auf 0 setzen und 0-Werte später einfach ignorieren, ist meiner Meinung nach die einfachste, wenn auch nicht eleganteste Variante.
 

swingens

Mitglied
Du nennst etwas mit der Komplexität n² elegant wenn es n sein kann ?
und dann noch unnötiges auf null setzen?

Du scheinst nicht richtig zu lesen, ich schrieb NICHT die eleganteste Methode.

und wenn sowas vorkommt:

greenarray_x [1] = 240;
greenarray_x [2] = 239;
greenarray_x [3] = 240;
greenarray_x [4] = 243;

greenarray_x [1] == greenarray_x [3] && 1!=3 und umgelehrt

Es ist nicht gesagt dass sich die werte nicht wiederholen !

Versteh Dein Progblem nicht ganz;
nur wenn die beiden Arrays die gleichen Werte haben (greenarray_x [1] == greenarray_x [3]) aber nicht gleich sind (greenarray_x [1] == greenarray_x [3]) sollen sie rausgelöscht werden.

Es werden ja in jedem Durchgang die gleichen Werte miteinander verglichen, also z.B. greenarray_x [1] mit greenarray_x [1]; diese Werte sollen natürlich nicht rausgelöscht werden, dafür greift dann j!=i :)

Kannst Du gerne mal ausprobieren, funktioniert auf jeden Fall
 

ankmanu

Bekanntes Mitglied
Hi,

also danke erstmal an alle.

Nur um klarzustellen: Ein Wert kann NICHT zweimal vorkommen!

@DaveX
danke, aber das in Zeile 4 mit List funktioniert nicht. Muss ich da noch irgendwas dran ändern?

Gruß
manu
 

DaveX

Mitglied
Ups da hast du recht, hab die prüfung falsch interpretiert,
dennoch sagte er dass die Abweichung auch eine Rolle spielt.

ich habe dein Beispiel getestet:

Java:
List<Integer> muelleimer = new ArrayList<Integer>();
int[] abc = {231,232,233,234,235,452,451,455,678,679,669}; 
for ( int i = 0; i < abc.length; i++ )
{
     for ( int j = 0; j < abc.length; j++ )
    {
	 if (abc[i]==abc[j] && j!=i)
	{
	    muelleimer.add(abc[i]); //Variable aus dem Array löschen

	}
    }     
 }
		 
for (Integer integer : muelleimer) {
	System.out.println("soll gelöscht werden "+integer);
}

Ist das richtig ?
 

DaveX

Mitglied
@ankmanu was funktioniert nicht ? Wie lautet die meldung ?

vielleicht fehlt oben der import?
import java.util.List;
import java.util.ArrayList;

Welches IDE benutzt du ?
das kann sonst automatisch generiert werden. wenn es fehlt
 
Zuletzt bearbeitet:

ankmanu

Bekanntes Mitglied
@DaveX

jo danke, ich hatte das import von java.util.List; vergessen...
Der Code geht jetzt, aber dein Testbeispiel nicht, da kommt als fehler:
method cleanArray nicht gefunden!

Das Beispiel geht jetzt ... SUPER...
Aber wie würde das ganze jetzt insgesamt aussehen?
Also wie kann ich jetzt nur die 3 richtigen Werte speichern(z.B in einem anderen Array)?
Das also nicht nur zwei identische Werte gelöscht werden, sondern auch welche mit einer Abweichung von +-10??


Grüße
manu
 
Zuletzt bearbeitet:

swingens

Mitglied
Dave, Dein Beitrag ist um einiges eleganter als meiner, besonders, da ich ja die Abweichung nicht berücksichtigt hatte.
Deine Interpretation meines Codes ist richtig, es wurden aber keine doppelten Werte initialisiert.
Für den Falle, dass doch welche initialisiert würden, würde der Code diese nur markieren, aber nicht rauslöschen.
Hier ist mir noch nicht ganz klar, wie Du diese tatsächlich rauslöschen willst... da hab ich ja nur die unelegante Methode mit dem ignorieren der 0-Werte ???:L
 

ankmanu

Bekanntes Mitglied
So, jetzt stimmt der Code mit der Abweichung, bis auf das, das jetzt alle werte gelöscht werden, und nicht 3 beibehalten werden!

Java:
import java.util.List;
import java.util.ArrayList;

public class test3
{
    public test3()
    {
    }
    public static void main (String[] args){
        
        List<Integer> muelleimer = new ArrayList<Integer>();
int[] abc = {231,232,233,234,235,452,451,455,678,679,669,232}; 
for ( int i = 0; i < abc.length; i++ )
{
     for ( int j = 0; j < abc.length; j++ )
    {
     if (abc[i]==abc[j] && j!=i)
    {
        muelleimer.add(abc[i]); //Variable aus dem Array löschen
 
    }
     if (abc[i]>abc[j]-10 && j!=i)
    {
        muelleimer.add(abc[i]); //Variable aus dem Array löschen
 
    }
    if (abc[i]<abc[j]+10 && j!=i)
    {
        muelleimer.add(abc[i]); //Variable aus dem Array löschen
 
    }
    }     
 }
         
for (Integer integer : muelleimer) {
    System.out.println("soll gelöscht werden "+integer);
}
    }
}
Wie kann ich das noch hinkriegen, das also in dem Fall hier 231, 452 und 678 in einem extra Array gespeichert werden?

Grüße
manu
 

DaveX

Mitglied
Du hast nicht alle Beiträge gelesen,
ich habe in meinem ersten Beitrag die funktion dafür gepostet , du hättest sie einfach wie unten benutzen sollen ;D

Java:
import java.util.List;
import java.util.ArrayList;

public class test3
{
    public test3()
    {
    }

public static Integer[] cleanArray(int[] values, int abweichung)
{
    List<Integer> filter = new ArrayList<Integer>();
    filter.add(values[0]);
    int tmp = values[0];
    for( int pos = 1 ; pos < values.length; pos++ )
    {
        if( values[pos] < tmp-abweichung || values[pos] > tmp+abweichung )
        {
            tmp = values[pos];
            filter.add(values[pos]);
        }
    }
        
    return filter.toArray(new Integer[filter.size()]);
}

public static void main (String[] args){
        
int[] abc = {231,232,233,234,235,452,451,455,678,679,669,232}; 
Integer[] gefiltertesErgebnis = test3.cleanArray(abc,10) // 10 ist die Abweichung
         
for (Integer integer : gefiltertesErgebnis ) {
    System.out.println("ist uebrig geblieben "+integer);
}
    }
}
 

DaveX

Mitglied
@swingens

rauslöschen ist sehr ungünstig da auf du evtl 80% der Array plätze zugreiffen musst.
und dazu laufst du n*n über das Array das dauert undkostet Zeit.

meine Idee war die einwert nehmen in den filter reinschmeissen und mit den nächsten vergleichen ob er der Abweichung genügt
wenn ja dann wird er nciht in den filter geworfen wenn ja dan wird er in den filter geworfen und gilt als neuer marker zum vergleichen.

So laufe ich nur einmal durch das Array muss es nicht modifizieren und am Ende convertiere ich die Liste zum Integer array mit den gefilterten Werten.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Arraywerte quadrieren und danach addieren Java Basics - Anfänger-Themen 11
C Arraywerte random vertauschen Java Basics - Anfänger-Themen 2
N Arraywerte vergleichen Java Basics - Anfänger-Themen 10
P Arraywerte in einer Zeile ausgeben Java Basics - Anfänger-Themen 3
Bierhumpen Arraywerte der größe nach sortieren Java Basics - Anfänger-Themen 5
S Zwei Arraywerte in Ein Arraywert Java Basics - Anfänger-Themen 16
U arraywerte Java Basics - Anfänger-Themen 7
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
T array auslesen Java Basics - Anfänger-Themen 2
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
N Einzelne Werte aus einem TreeSet auslesen Java Basics - Anfänger-Themen 2
D Eclipse will nicht auslesen Java Basics - Anfänger-Themen 6
E TIF Datei auslesen Java Basics - Anfänger-Themen 2
krgewb Breite und Höhe eines Bildes in base64 auslesen Java Basics - Anfänger-Themen 3
sserio TXT-Datei Auslesen und den Wert jedes Namen ausrechnen etc. Java Basics - Anfänger-Themen 37
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
U Sekunden von LocalTime auslesen, wie möglich? Java Basics - Anfänger-Themen 1
E Outlook ordner auslesen Java Basics - Anfänger-Themen 4
R Eigenschaft über Parameter auslesen und ändern Java Basics - Anfänger-Themen 15
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
J Datei aus Netzwerk auslesen Java Basics - Anfänger-Themen 9
J Jsonfile auslesen Java Basics - Anfänger-Themen 8
A Eine Textdatei auslesen Java Basics - Anfänger-Themen 16
N Aus einem String die Anzahl der Vokale auslesen Java Basics - Anfänger-Themen 40
H Array rückwärts auslesen funktioniert nicht Java Basics - Anfänger-Themen 3
J Bestimmte parameter aus Jsonfile auslesen Java Basics - Anfänger-Themen 15
AleXusher Mehrdimensionales Array aus txt.file auslesen Java Basics - Anfänger-Themen 4
L Zeichen an bestimmter Stelle auslesen Java Basics - Anfänger-Themen 4
3 Textdatei Zeilenweise auslesen Java Basics - Anfänger-Themen 3
J Json Datei auslesen Java Basics - Anfänger-Themen 4
I Java String einlesen und auslesen Java Basics - Anfänger-Themen 11
S Tastatureingabe auslesen und in Konsole ausgeben Java Basics - Anfänger-Themen 6
S CSV Datei auslesen und anders darstellen Java Basics - Anfänger-Themen 2
G Scanner nutzen und Index auslesen Java Basics - Anfänger-Themen 8
N JTable auslesen Java Basics - Anfänger-Themen 6
N Java CSV Datei auslesen Java Basics - Anfänger-Themen 6
F Webseiten Quelltext auslesen Java Basics - Anfänger-Themen 5
J Datei auslesen (nur bestimmte Stellen) Java Basics - Anfänger-Themen 2
I csv auslesen, mittels List Java Basics - Anfänger-Themen 18
S Letzte Zahl eines Integer auslesen? Java Basics - Anfänger-Themen 3
G If / While Programm (Datei auslesen) Java Basics - Anfänger-Themen 6
S Aus einer .bz2 Datei auslesen Java Basics - Anfänger-Themen 2
K Textdatei auslesen und über Mqtt schicken Java Basics - Anfänger-Themen 4
B Name von Verzeichnis bekommen - Files von einem Ordner auslesen Java Basics - Anfänger-Themen 4
A Daten auslesen/vergleichen Java Basics - Anfänger-Themen 3
D XML von Seite auslesen Jsoup Java Basics - Anfänger-Themen 2
I Druckerauflösung auslesen - mittlerweile möglich? Java Basics - Anfänger-Themen 4
B WSDL auslesen? Java Basics - Anfänger-Themen 8
D Methoden Textdokument erstellen und auslesen. Java Basics - Anfänger-Themen 46
B HTML Code / Seite auslesen und JAVA Objekte erstellen Java Basics - Anfänger-Themen 12
S Datein auslesen und verarbeiten Java Basics - Anfänger-Themen 1
J Geld speichern und wieder auslesen Java Basics - Anfänger-Themen 10
S CSV auslesen UTF-8 Problem Java Basics - Anfänger-Themen 7
D Datei auslesen & Werte in Variable speichern Java Basics - Anfänger-Themen 12
K String buchstaben auslesen Java Basics - Anfänger-Themen 9
S Amazon Produktbeschreibung auslesen und nach Keywords suchen Java Basics - Anfänger-Themen 2
x-tshainge Interface Wie kann ich aus Textfeldern auslesen Java Basics - Anfänger-Themen 6
Z Ersten Buchstaben eines Elements eines String-Arrays auslesen Java Basics - Anfänger-Themen 5
B .txt. Datei auslesen und bestimmten Wert wiedergeben Java Basics - Anfänger-Themen 5
CptK x wert eines Bildes auslesen Java Basics - Anfänger-Themen 1
T Website auslesen Java Basics - Anfänger-Themen 2
T String auslesen bzw. überprüfen Java Basics - Anfänger-Themen 1
L CSV Auslesen Java Basics - Anfänger-Themen 5
B Auslesen von PDF / Bilder Java Basics - Anfänger-Themen 5
das_leon Alle Zeilen einer CSV-Datei auslesen Java Basics - Anfänger-Themen 1
D Mit Java HTML bzw Javascript auslesen Java Basics - Anfänger-Themen 1
F Arrays Sätze speichern und einzelne Worte mit Index Angabe auslesen Java Basics - Anfänger-Themen 4
F Zwischenwerte aus Browser auslesen Java Basics - Anfänger-Themen 19
S Jede Ziffer einer Zahl auslesen, damit rechnen und beim Ergebnis wiederholen ? Java Basics - Anfänger-Themen 20
G Servlet - externe HTML (URL) auslesen Java Basics - Anfänger-Themen 1
T class Datei auslesen Java Java Basics - Anfänger-Themen 5
P Liste auslesen und in Variablen speichern Java Basics - Anfänger-Themen 7
D String erste Zahl mit LKZ auslesen lassen Java Basics - Anfänger-Themen 36
J Hashmap auslesen Java Basics - Anfänger-Themen 7
J Auslesen/speichern und wieder einlesen Java Basics - Anfänger-Themen 7
D String untereinander auslesen lassen Java Basics - Anfänger-Themen 2
M Aus Datei auslesen und untersuchen ob diese Zeile schon vorhanden ist Java Basics - Anfänger-Themen 3
DaCrazyJavaExpert Variablen Zahlen aus Strings auslesen Java Basics - Anfänger-Themen 4
J Informationen aus Webseiten auslesen Java Basics - Anfänger-Themen 1
S Text aus einer HTML Datei auslesen Java Basics - Anfänger-Themen 1
M Einzelne Pixel in einem Bild auslesen und bearbeiten Java Basics - Anfänger-Themen 1
dragonfight86 Erste Schritte OpenDocument auslesen Java Basics - Anfänger-Themen 13
I Texte mit Absätzen in Dateien speichern und auslesen Java Basics - Anfänger-Themen 1
W DNS Name auslesen + weitere Anfängerfrage Java Basics - Anfänger-Themen 4
C Werte aus JTable auslesen Java Basics - Anfänger-Themen 4
Chrizzey45 Calc-Dokument in Java auslesen? Java Basics - Anfänger-Themen 2
B Datei auslesen und 2D-Array anlegen Java Basics - Anfänger-Themen 1
B Key auslesen/ausgeben innerhalb von foreach() Java Basics - Anfänger-Themen 5
M Eigenschaften einer Datei auslesen Java Basics - Anfänger-Themen 5
M Textarea auslesen und beschreiben Java Basics - Anfänger-Themen 8
JokerBlacky Klassen Klasse Queue Klasse mit Attributen anhängen und auslesen können Java Basics - Anfänger-Themen 4
Y Bildschirmauflösung auslesen Java Basics - Anfänger-Themen 4
S for schleife auslesen Java Basics - Anfänger-Themen 4
Voreck String Zeichen für Zeichen auslesen Java Basics - Anfänger-Themen 9
Voreck Array aus txt datei auslesen Java Basics - Anfänger-Themen 2
N JFreeChart --> TimeSeries auslesen Java Basics - Anfänger-Themen 9
OlafHD Datei Auslesen Java Basics - Anfänger-Themen 6
M Metadaten OpenOffice mit Java auslesen Java Basics - Anfänger-Themen 9
P JList, aus selectedValue bestimmten Wert aus Containerklasse auslesen Java Basics - Anfänger-Themen 4
J OpenOffice Dokumentenvariable mit Java auslesen Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben