- Karácsonyfaként világíthat a Thermaltake új CPU-hűtője
- Az USA vizsgálja a RISC-V kínai terjedésének kockázatát
- Kicsit extrémre sikerült a Hyte belépője a készre szerelt vízhűtések világába
- Egészen nagy teljesítményspektrumon fedné le a mobil piacot az AMD
- Kihívás a középkategóriában: teszten a Radeon RX 7600 XT
Hirdetés
-
Az USA vizsgálja a RISC-V kínai terjedésének kockázatát
ph A Kereskedelmi Minisztérium egyelőre csak felméri a helyzetet, egyelőre nem látni, hogy tudnak-e bármit is tenni.
-
Toyota Corolla Touring Sport 2.0 teszt és az autóipar
lo Némi autóipari kitekintés után egy középkategóriás autót mutatok be, ami az észszerűség műhelyében készül.
-
Samsung Univerzum: Így ismerhető meg a Galaxy AI bármilyen telefonon
ma A Try Galaxy webalkalmazás kontrollált környezetben mutatja meg, mit tud a One UI 6.1-es rendszer és a mesterséges intelligencia.
Új hozzászólás Aktív témák
-
BaLinux
tag
Hát nem értem teljesen a mod részben leírtakat, ha kóddal alátámasztanád, egyszerűbb lenne javítani. BufferedReader hol száll el? Mért? Az exception mechanizmust nem illik/érdemes arra használni, hogy a programod normális lefolyásában vezérlőszerkezet legyen, hanem amire való: kivételes állapotot (amivel az a metódus nem tud mit kezdeni) jelezni és stacken feldobni.
Amúgy a megoldás kb ennyi:
int lines=0;
while(bufferedreader.readLine()!=null) lines++;
// lines-ban van a sorok száma -
BaLinux
tag
Mobilokra IS lehet programot írni, igaz az egy nagyon szűk részhalmaza a ''teljes'' változatnak (standard edition), amit pl. PCre használunk.
Letölteni... a mobilosat? Az nehezebb ügy mert minden mobilgyártónak van egy saját kis szabványa, így legjobb ha a gyártó honlapján keresed. A standard editiont pedig mondjuk java.sun.com. -
BaLinux
tag
-
BaLinux
tag
Az appletek eléggé speciális kis java osztályok, tehát általában még nem is az applet-írás a Java fő profilja. Kétségtelenül praktikus, viszont spec. én eddig 1 appletet se írtam, de számos standalone applikációt.
Átlaguser valóban nem úgy indítja, hogy kikeresi a main osztályodat, és java -cp classpath bla.bla.bla.osztaly
A .jar fileok arra valók, hogy abba becsomagolva a lefordított class-aidat és egy kis meta-információt (mit kell indítani benne pl), egyszerűen el lehessen indítani, leginkább duplakatt .jar-ra, ami azt csinálja hogy: java -jar jarfile
A legjobb megoldás mégiscsak valami script (.bat), ami - ha bonyolult classpath és egyéb beállításaid vannak - megkíméli a usert mindentől. Akár írhatsz is egy kis c(++) progit ami egyszerűen elindítja a java progit. -
BaLinux
tag
válasz Protezis #188 üzenetére
Ha így akarod megcsinálni, akkor levonhatom azt a következtetést hogy új neked az OO szemlélet?
Ja, a javascriptnek annyi köze a java-hoz, hogy kb. semmi.
Tehát, van két osztályod, és uazt a metódusát akarod meghívni. Tipikus eset az interface-es absztrakcióra:
interface KozosTudas
{
public void fuggeny();
}
class Osztaly1 implements KozosTudas
{
public void fuggveny() {
System.out.println(''osztaly1'');
}
}
class Osztaly2 implements KozosTudas
{
public void fuggveny() {
System.out.println(''osztaly2'');
}
}
Ezek után valahol vannak ilyen cuccaink:
Osztaly1 o1;
Osztaly2 o2;
Ezek mindketten implementaljak a KozosTudas-t, tehát:
KozosTudas[] tomb=new KozosTudas[2]; //hulye pelda...
tomb[0]=o1; tomb[1]=o2;
for(int k=0; k<tomb.length; k++) {
tomb[k].fuggveny();
}
SZVSZ keress egy tutorialt ilyen temabol, esetleg ajanlok 1-2 konyvet maganban...
szerk: kénytelen voltam a ciklusváltozót k-nak nevezni mer amúgy italic-ba nyomta a fórum az egészet ami az indexelés után van
[Szerkesztve] -
BaLinux
tag
válasz Protezis #191 üzenetére
Jóra gondolsz. Akkor máshogy próbálom meg a dolgot
A Java nem scriptnyelv, nem erre való, tudom csak kíváncsi vagy. Ha valamire ilyen megoldást agyaltál ki, gondolj ki mást, mert nagy valószínűséggel rossz módszer.
Ettől függetlenül van kivétel (pl RPC vagy hasonló dolgok implementálása), és ezért van is megoldás minderre. Nézd meg a Java API doksiban a java.lang.reflect csomag tartalmát, mindent tartalmaz ami a nyelvi reflekcióhoz szükséges lehet. Metódusok, konstruktorok, kivételek, tömbök, mindent tud. Advanced topic!
Hogy lássad, kb. ennyiből állna a dolog:
ha van egy Osztaly nevű class-od, annak float function(int) metódusa, és annak egy o1 instance-ja, akkor a következő rész meghívja a függvényt, és a visszatérő értéket is megkapod.
Method m=Osztaly.getMethod(''function'', new Class[] {int.class});
Object ret=m.invoke(o1, new Object[] {new Integer(1)});
float vissza=((Float)ret).floatValue();
Kész. Persze semmi értelme ennek, mert írhatnád ezt is, ez ugyanaz:
float vissza=o1.function(1);
Csak az előbbinél észre se veszed ha elírtad a függvénynevet, vagy bármilyen hibát vétettél, csak futási időben, míg az utóbbinál már fordításnál. A típusbiztonság nagyon fontos a jó programban, úgyhogy törekedni kell rá. -
BaLinux
tag
Az ilyen törtekkel mindig az a baj, hogy a ''valós'' számokat csak akkor tárolja pontosan a gép, ha a legnagyobb és legkisebb nem nulla számjeggyel kitöltött helyiérték (negatív, azaz tört kitevőjű helyiértékeket beleértve) között elég kicsi a különbség. Mondhatnám azt is, hogy kettes számrendszerben _véges_ törtként ábrázolható törteket.
Azaz csak a 1/2 1/4 1/8 1/16 ... stb és ezekből véges darab, egymáshoz közel állók összege lesz pontos. Próbáld kirakni az 1/9-et.
Ezt még szorzod egy hasonló pontos számmal, kerekíted, meg se bírom becsülni ebből mi sülhet ki -
BaLinux
tag
válasz Protezis #211 üzenetére
Részegség, fél egészség
Teljesen jól gondolkozol, csak láss a szöveg mögé: a Szamla osztálynál nem tiltja meg, hogy csinálj egy int getSzamlaID() metódust, amivel lekérdezheted a kívánt adatot. Sőt, egy int getEgyenleg(), void setEgyenleg(int), de még void addToEgyenleg(int) sincs megtiltva. Hajrá! -
BaLinux
tag
Lehet. Segítségül, ezeket a függvényeket használd.
javax.sound.sampled csomagból:
Audio file betöltés: AudioSystem.getAudioInputStream(File),
Clipre is lesz szükséged: AudioSystem.getClip(),
az AudioInputStreamet benyomod a clipbe: Clip.open(AudioInputStream),
lejátszod: Clip.start() -
BaLinux
tag
Megjegyzéseim:
mod: amikor elkezdődik a dőlt szöveg, ott volt egy [ i ]. Lesz több is, de semmi kedvem kijavítani mindenhol
- a Kartya.PIN-t inicializáld a véletlen számmal.
- a Penzintezet.befizet(int osszeg, Szamla szamla) metódusban a szamla.egyenleg+=osszeg; ronda. Elvileg eléred, ha nem private, de akkor is szebb egy szamla.addEgyenleg(osszeg);. Későbbi hülyeségektől menthet meg.
- itt hasonlóan:
public int kivesz(int osszeg, Szamla szamla) {
int kivet;
if (szamla.egyenleg<osszeg) {
kivet=szamla.egyenleg;
szamla.egyenleg=0;
return kivet;
}
szamla.egyenleg-=kivet;
return kivet;
}
(ez kicsit rövidebben is írható, de ez most mind1)
- Itt kezdődnek a problémáid (NullPointerException démon képében):
public void befizet(int osszeg, int szamlaID, String nev) {
for (int i=0; i<=MAX_UGYFEL_SZAM; i++) {
// oops, mért MAX_UGYFEL_SZAM-ig? a tömb tele lehet null-okkal. ráadásul túlindexeled a tömböt eggyel!
if (szamlak.getSzamlaID()==szamlaID) {
if (szamlak.getTulajdonos()==nev) {
szamla.egyenleg+=osszeg;
}
}
}
}
helyesen:
public void befizet(int osszeg, int szamlaID, String nev) {
for (int i=0; i<ugyfelekSzama; i++) {
// ugyfelekSzama használandó, ha már van, és tudod hogy addig nem null a tömb.
// esetlegesen egy if (szamlak!=null) is betehető ide, ha össze-vissza lennének, ami nem igaz.
if (szamlak.getSzamlaID()==szamlaID) {
// használhatnál && operátort, nem muszáj külön ifeket.
if (szamlak.getTulajdonos()==nev) {
// itt sejted mit kommentálnék ismét
szamla.egyenleg+=osszeg;
}
}
}
}
a kivesz(...) metódusra hasonlóan.
- a szamlaletrehoz(...)-ban ugye illene egy allokáció, vagy kapsz egy gigantikus NullPointerExceptiont a fejedbe, mint véres fejdísz.
így: new Szamla(...), aztán azon operálva, majd beletéve a tömbbe. Megint, nem írunk át más osztálybeli adattagokat, ha aranyosak vagyunk.
- Takarekpenztar.szamlaletrehoz(...): felüldefiniálást nem úgy kell feltétlenül érteni, hogy copy-paste-1-sor-módosít. Meg lehet hívni a felüldefiniált metódust.
pl: {
if (egyenleg==0) return null;
return super.szamlaletrehoz(egyenleg, nev);
}
Amúgy ez a struktúra amit a feladatban kijelölnek, kicsit rossz lenne komoly alkalmazásnál, dehát csak egy feladat.
- public Terminal(String bank) {
// NullPointerException: bankmezo==null
bankmezo.terminalokSzama++;
// intezetNeve: undefined symbol
intezetNeve=bank;
}
- Terminal.kivesz hiány
Ja, ha jól értem itt befejezted. További sok sikert!
Annyival kommentálnám még az egészet, hogy egy valós alkalmazásban megfelelő adatstruktúrákat alkalmaznék (ami itt ellentmond a feladattal, mert tömböket kell használni), ami nem lineáris keresést tud (Hash, Tree). Tudom, tudom, ez a feladat, bocs hogy beszólok.
[Szerkesztve] -
BaLinux
tag
válasz andriscs #225 üzenetére
Jah, elcseszett windózos konzol. A System.out-ot (vagy .err-t) wrappeld egy ilyenbe:
PrintStream(OutputStream out, boolean autoFlush, String encoding)
ahol az encoding legyen ''852'' asszem.
Illetve válogathatsz innen: Bővebben: link -
BaLinux
tag
válasz andriscs #227 üzenetére
Ezek szerint nem értetted amire gondolok. Természetesen nem egy OutputStream-et kell létrehoznod, hanem a PrintStreamet!
new PrintStream(System.out, false, ''852'');
Én csak a PrintStream konstruktor paraméterezését vágtam be ide...
mod: megnéztem, az OutputStream osztály absztrakt (és mért ne lenne az, nincs hozzárendelve semmiféle ''kimeneti eszköz'', így natúr), így természetes hogy nem lehet konstruálni. Pontosan mit akartál csinálni?
[Szerkesztve] -
BaLinux
tag
Ez egy picit összetett dolog, biztosan ki is fogok felejteni valamit.
Használat módjai:
- static osztály változók: nem keletkeznek objektumonként, hanem az osztály összes példánya közösen használja a változót
pl.
class A { static int count; A() {count++;} }
esetén minden egyes konstruktorhívásnál inkrementálódik a count.
- static tagfüggvények: az előbbihez kapcsolódik, ugyanis ilyen függvényhez nem tartozik objektum. Ezt úgy értem, hogy a class A { static void fgv() {} } oszály fgv függvénye így hívható: A.fgv(); Természetesen ennél fogva nincs az fgv-ben definiálva ''this'' változó és ezért nem-static osztály változók/függvények sem használhatók, viszont static-kel jelöltek igen. (Persze ha átadsz paraméterben bármilyen objektumot, azzal azt csinálsz amit akarsz.)
- static belső osztályok: olyan osztályon belül definiált osztályok, melyek nem kapcsolódnak a külső osztályhoz példányszinten. Huh, ez bonyi
Na szóval:
class A { static int count; int local; static class B { }}
ilyenkor az A.B osztály példányosítható A-n kívülről. Egyébként nem! Továbbá az A.B osztály nem fér hozzá az A.local változóhoz, de az A.counthoz igen.
Ööö van még valami?!
[Szerkesztve] -
BaLinux
tag
Kiegészíteném a nem-static belső class-ról mondottakat azzal, hogy példányosíthatóak kívülről, amennyiben a new operátor egy kevéssé szokásos szintaxisát használjuk.
pl. legyen:
class A {
int a;
class B {
void ezmuxik() {
// itt hivatkozunk a kulso osztalyra! Ehelyett irhatunk a++;-t, ha az egyertelmu.
A.this.a++;
}
}
}
Van egy másik osztály, mely ezt csinálja:
class C {
void f() {
// hibas! ''no enclosing instance of A''
new A.B();
// gyartunk egy A-t
A a_peldany=new A();
// explicit megadhato az enclosing instance!
A.B ab_peldany=a_peldany.new B();
}
}
Na kezd teljes lenni a dolog. Remélem érthető. -
BaLinux
tag
Nyugodtan
Bár úgy látom, hogy a kérdéseidre kifejtettem már a választ, csak nem pont ezekkel a példákkal... na lássuk:
1. A hiba valóban az, hogy oda kell a static, ugyanis (ahogy már leírtam): tetszőleges osztályban definiált static függvény osztálypéldány nélkül hívható. Ez azt jelenti, hogy nem tud hozzáférni (nem ''látható'' a függvény törzséből) semmilyen nem-static osztályváltozó. A nem-static belső osztályokra ez a szabály azért vonatkozik (tehát nem tud létrehozni olyan belső osztály típusú objektumot), mert a nem-static belső osztályok példányainak alapból rendelkezniük kell referenciával a külső osztályuk (amiben definiáltad a belső osztályt) egy példányára. Méghozzá pontosan arra, amely teremtette őket.
A belső osztály példány referenciája a külsőre úgy néz ki, hogy A.this (ha A a külső osztály neve). Remélem összeállt...
2. két lehetőség: nem kell static a B osztály elé, vagy éppen static kell az int a elé.
A szabály ugyanaz, mint az előbb: mivel a belső osztály statikus, nem kötődik külső oszályhoz, így a belső példány nem is rendelkezik információval (referenciával) az ő bennfoglaló objektumáról, ami ha a staticot eltöröljük, az A osztály egy példánya lenne.
Így a
a = aa;
sorban nem tud hozzáférni az 'a' változóhoz, ugyanis a szimbólumtáblázat látható részében (hogymondják szépen magyarul azt, hogy scope? ) nincs ilyen változó!
Ugye amikor azt írod hogy 'a', ebben az esetben prioritási sorrendben így tud feloldódni a jelentése:
1) lokális blokkban ({ } közötti utasítások) lévő változók
2) szülő blokkban lévők
3) rekurzívan a függvény fejlécig, itt a fgv paraméterek jönnek be
4) osztályváltozók (ez az ami ilyen bonyi szabályokkal írható le, ahogy eddig tettem)
Az utóbbinál az 'a' szimbólum ekvivalens a 'this.a'-val, amennyiben a belső rendelkezik nem-static 'a' nevű változóval; továbbá ekvivalens 'Belsoosztaly.a'-val, ha rendelkezik static 'a' nevű változóval.
Van egy ''5.'' szint, amennyiben egy belső osztályban használt változóról van szó. Ilyenkor az 1-es ponttól oldjuk fel ismét rekurzívan attól a helytől kezdve, ahol az osztályt definiáltad... így lesz az 'a'-ból 'Kulsoosztaly.this.a', ha a belső osztály nem static és a a Kulsoosztaly rendelkezik nem static 'a' változóval, a static szintaxis meg egyenlő a fentivel, tehát a 'Kulsoosztaly.a' static(!) változó mindenhonnan hozzáférhető, akár static, akár nem a belső osztály.
Hmmm... remélem érthető
[Szerkesztve] -
BaLinux
tag
Megkérdezhetem, hogyan? Gondolom rájöttél hol hibás a gondolat.
Másrészt viszont ilyen kulcsra való keresést (itt egy String a kulcs) ne Vector-ban, hanem HashMap/HashSet-tel vagy TreeMap/TreeSet-tel csinálj, mert a vector nem erre való. Ugye Vector esetén O(n) az elérési idő, Hash*-nél átlagosan O(1), Tree*-nél garantált O(log n). -
BaLinux
tag
Ez gáz, ugyanis nemhogy nem tudok a PH!-n javasolni topicot ennek, hanem az egész rohadt nagy neten nem láttam még soha ilyet, és néhány kulcsszóra google-özve sem találtam semmit, úgyhogy... no comment, sok sikert, engem is érdekel ha jutottál valamire.
Ez így nem Java, annyi biztos. Van köze hozzá a szintaxisnak, de abszolút nem ugyanaz. -
BaLinux
tag
Nem, a hosszú sorok Java-ban is szintaktikailag helyesek. Ami nincs: goto, illetve azok a hosszú nevű azonosítók.
Szumma: ez nem java, csak valami zombi/mutáns.
mod: ilyen formában ez egy programrészlet, azok a hosszú azonosítók lehetnek korábban deklarált változók, stb. Mondjuk érdekes az a return ott a közepén. Goto tényleg nincs.
[Szerkesztve] -
BaLinux
tag
válasz muad_dib #289 üzenetére
Van egy olyan lib, hogy JDOM. Ez jó. Eddig mindig a SAXBuilder-t használtam, az végigparszolja a memóriában és fát épít belőle, azt mondod hogy ez nem túl jó.
Ezen kívül van a SAXParser, ami nem olvassa fel, hanem egy összetett listener rendszeren keresztül küldözgeti neked az elemeket, így streammel is elboldogul talán.
Videót XML-ben? Állat
Nem lenne értelmesebb egy saját protokoll, ami csomagokra bontja a nagy bináris adatfolyamot, és közötte lehet olyan csomag, hogy ''metaadat'', ami egy xml dokumentum lenne?
A SAXParser természetesen legalább egy elemet mindig teljesen felolvas, sőt nyilván az aktuális elem összes parentjét is meg kell tartania. Így ne gondolj olyanra, hogy 100 megás text adat. Ráadásnak XML-ben binárisat nem tudsz normálisan átvinni, legegyszerűbb a Base64 encode, ami még a méretet is növeli, igaz tömörítéssel részben visszahozhatod azt.
Gondold meg, na. -
BaLinux
tag
Úgy hogy nincs a gépén Java runtime, nem fog futni Java progi...
1) le kell töltenie (vagy mellékeled) a legfrissebb jre-t.
2) a programodat tetszőleges számú jar fileban beinstallálod egy könyvtárba
3) a link amire duplaklikkel behívja a fent említett parancsot, amivel a progi elindul.
Mért legyen lehetőleg 1 file, nem értem... semmi értelme.
Semmi egyéb program nem kell Java runtimeon kívül, a .jar fileok igaz hogy .zip-ek, de a jre természetesen tudja kezelni magától, semmivel nem kell foglalkozni.
Persze ha már van java-s progija az illetőnek, akkor az egyes pontot nem kell elvégezni. -
BaLinux
tag
A Java nem erre való.
Manapság már illik adni kicsit a modularitásra. Értsd, nem teszünk bele mindent egy exe-be statikusan, hanem közös dll-ek, stb.
Ez a ''mindent egybe'' szoftvertervezési módszer... öö... elavult, és a Java meg ilyenek nem ''divat'' kérdése, hanem komoly mérnöki munka és tapasztalat eredménye.
Persze egy beágyazott rendszerbe (autó, hifi, tv) nyilván nem való ez a dolog (még!).
A jre-nek meg van installerje, azt telepíti külön, és örül magának, mert soha többet nem kell megtennie. A saját progidhoz is csinálsz installert, ha már átlagusernek írod, és azzal sem lesz gond.
[Szerkesztve] -
BaLinux
tag
válasz #53246592 #304 üzenetére
Elég rossz kérdés...
Mit jelent itt az, hogy ''hamarabb''? Ha utasításciklusokban mérjük, akkor attól függ milyen gépen fut, ha meg időben mérjük, akkor még az ütemezés is számít.
Válasz: ki tudja. Ja, azt esetleg ki lehetne számítani, hogy adott kezdőfeltételek mellett mennyi valószínűséggel fut le egyik hamarabb mint a másik
Amúgy olyasmire akar kilyukadni, hogy a float és double kivonás között milyen különbség van? Reflexből mondhatnám, hogy a virtuális gép utasítások szintjén a floatos gyorsabb, mert csak 32 bit, kevesebb művelet. Aztán lehet persze, hogy a mai FPU-k ugyanannyi idő alatt végeznek egy float és egy double kivonással.
mod: áá rájöttem hogy mi akar ez lenni: a floatos végtelen ciklus, a double-os nem, ugye?
[Szerkesztve] -
BaLinux
tag
válasz Terminus_ #311 üzenetére
Jegyezd meg melyik osztállyal van baja a fordításnál, és azt keresd meg a jarokban.
A classpath-ban amúgy 2 féle bejegyzés lehetséges:
- ha könyvtárat adsz meg, akkor az azon belüli összes .class filet figyelembe veszi, rekurzívan, de a jarokat nem!
- jart is megadhatsz, de egyszerre csak egyet.
Tehát az általad megadott ''d:\Program files\Apache Software Foundation\Tomcat 5.5\common\'' nem jó, ha az ottani jar fileokat akartad includeolni. Egyenként fel kell sorolni őket...
Kivétel, ha az egyik jar-ban van olyan manifest.mf, amelyben leírja milyen jarokra van szüksége. Amennyiben azok az ahhoz a könyvtárhoz relatívan megadott elérési úton megvannak, akkor azok a jarok automatikusan includeolódnak, nem kell külön CP-ben megadni. Ez persze rekurzívan működik.
[Szerkesztve] -
BaLinux
tag
válasz Terminus_ #313 üzenetére
Egészen biztos vagy benne hogy van a servlet-api.jar-ban javax/servlet könyvár, ugye? Meg hogy pontos az elérési út? Javaslom, hogy inkább mindenhova használj slasht backslash helyett, windóz alatt is. Ha ezek megvannak, akkor érdekes...
Amúgy a mérhetetlen produktivitás növekedés elősegítése érdekében javaslom, hogy használj egy jó IDE-t, és ne parancssorból szerencsétlenkedj. Én az Eclipse IDE-t használom mindenre. Ismerd meg azonnal, ha eddig nem tetted.
[Szerkesztve] -
BaLinux
tag
válasz Terminus_ #315 üzenetére
Akkor mit töltöttél le, amit apache tomcat néven terjesztettek, és nem volt benne ez a jar? Biztos hogy a megfelelő SDK-t, blabla?
Nem tudom milyen Eclipse-et használtál, én kb 2 éve használom _nagyon_ sokat (2.1-től), és soha nem volt olyan amit egy editorablak-bezár-újranyit művelet nem oldott volna meg. Legrosszabb esetben egy clean project. Ne csináld már -
BaLinux
tag
válasz Hujikolp #321 üzenetére
Lap, kép, micsoda?
Ha ez valami html+javascript, akkor javaslom a javascriptes topicot, mert ennek a java-hoz semmi köze.
mod: ha arra gondolsz, hogy egy browser-ablakot bezárni, akkor a válaszom az hogy nem teheted meg. Ugyanis ehhez a javascriptnek direkt nincs joga. Nem javascriptből nyitott ablakot egyáltalán nem zárhat be, javascripteset esetleg rákérdezéssel.
[Szerkesztve] -
BaLinux
tag
Ezzel a két fileban előforduló közös szavak problémájára javasolnék egy normális (értsd hatékony ) algoritmust:
1. mindkét listát beolvasva pl. lexikografikusan rendezed őket egy-egy vektorba, legyenek ezek: v1, v2
2. k=0, j=0
3. do
4. ha v1[k]<v2[j] akkor k++
5. egyébként ha v1[k]>v2[j] akkor j++
6. egyébként nyilvánvalóan v1[k]==v2[j] teljesül tehát találtunk egy közös elemet; k++, j++
7. while k<v1.length && j<v2.length
Az egyező elemeket a 6-os lépésben el lehet tenni egy másik vektorba.
[Szerkesztve] -
BaLinux
tag
Gondoltam a HashSet-re, de elvetettem, mert az kezdőknek esetleg kevésbé érthető hogy mért jó az.
Amire gondoltál az a HashSet, ilyen van, rendben. Elvileg a beillesztés/keresés O(1) idejű benne, de pl. telítettség függvénye a konstans szorzó és alapvetően elég nehéz megjósolni. Összességében tehát O(n+m) lépés lenne a HashSetes módszer. A rendezéses módszer garantált O(nlogn)+O(mlogm), meg még min(n,m) lépés.
Attól függ hogy átlagban, vagy legrosszabb esetben hogyan kell teljesítenie az algoritmusnak. -
BaLinux
tag
válasz andriscs #406 üzenetére
Visual Editor: Bővebben: link
Amúgy kézzel sem nagy cucc, ha kitapasztalod kicsit hogy mit tud. Gyakorlatilag komponensenként max 2-3 sorban beállíthatod a paramétereket, ennyi szokott lenni.
[Szerkesztve] -
BaLinux
tag
Futtasd valami profilerrel, ami tud mem allokációkat naplózni, pl. JProfiler. Abból elég jól ki fog derülni, miből van több mint kéne... Remélhetőleg a referenciákat felesleges módon megtartókat is végig tudod követni vele. Ez így már sokkal többet tud mint hogy mennyi objektum van.
[Szerkesztve]
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))