Hirdetés

2024. május 2., csütörtök

Gyorskeresés

Útvonal

Fórumok  »  Szoftverfejlesztés  »  Java programozás (kiemelt téma)

Hozzászólások

(#10901) p76


p76
senior tag

Használjátok a funkcionális programozást mindenhol ahol csak lehet?

for (Label infoLabel : infoLabelList) {
   uiTable.row();
   uiTable.add(infoLabel);
}

helyett:

infoLabelList.forEach(x -> {
   uiTable.row();
   uiTable.add(x);
  });

(#10902) Drizzt válasza p76 (#10901) üzenetére


Drizzt
nagyúr

Ahol jobban olvashato ott igen. En igyekszem ahol lehet, de ha tul egzotikusan kell megoldani(pl. Exception dobo metodusok), ott nem hasznalom.

I am having fun staying poor.

(#10903) Zsoxx válasza p76 (#10901) üzenetére


Zsoxx
senior tag

Sok értelmét nem látom a második verziónak. Nem sokkal lesz rövidebb a kód, és nem olvashatóbb.

(#10904) fatal` válasza Zsoxx (#10903) üzenetére


fatal`
titán

Ebben az esetben valóban kb. mindegy. Tegyünk bele egy kis szűrést és rendezést és máris átalakul a kép. :)

(#10905) togvau


togvau
senior tag

próbálom megérteni a streamek furcsaságait, de nem sikerül:
Arrays.asList(asd).stream().forEach(System.out::println);
Miért nem írja ki a lista tartalmát? Egy ref stringet ír ki, gondolom a stream-ét.
  for (int j : asd) {
   System.out.println(j);
  }
A klasszikus foreach meg simán működik, ahogy kell.

Miért?

[ Szerkesztve ]

hitler, sztálin, micro usb

(#10906) Drizzt válasza togvau (#10905) üzenetére


Drizzt
nagyúr

A streammel nincs baj, az Arrays.asListet használod rosszul. Az listát csinál a megadott tömb elemeiből. Jelen esetben egy egy elemű listád lesz, aminek az az egy eleme egy int[] lesz.

int[] ints = new int[]{0, 1, 2, 3};
Arrays.asList(ints).stream().forEach(System.out::println);
Arrays.asList(1, 2, 3).stream().forEach(System.out::println);

Arrays.stream(ints).forEach(System.out::println);

Eredménye:

[I@1218025c
1
2
3
0
1
2
3

I am having fun staying poor.

(#10907) togvau válasza Drizzt (#10906) üzenetére


togvau
senior tag

köszi

hitler, sztálin, micro usb

(#10908) Csaby25


Csaby25
senior tag

Sziasztok!
Valaki meg tudná magyarázni, hogy miért csak 3 String objektum jött létre?
Itt a válasz, csak nem értem, hogy miért.. :F
[link]
Köszi!

[ Szerkesztve ]

A kis emberek más emberekről beszélnek, a középszerű emberek eseményekről, a nagy emberek pedig ötletekről beszélnek.

(#10909) p76 válasza togvau (#10907) üzenetére


p76
senior tag

Egyébként ez cseles, mert Integer[] és minden egyéb objektummal tömbbel úgy működik ahogy gondoltad. Csak mivel List<int> nem lehet, primitív adattípusokkal nem müxik és a Java jobb híján berakja az int[]-et egy elemnek.

(#10910) crocy


crocy
tag

Hi!

Van ket listam(List<Elem>a, List<Elem>b), meg szeretnem szamolni, hany helyen van közös elemük java 8 stream segitsegevel.
Vmi közös iterator vagy foreach kene, de ahogy neztem ezt ebben a verzioban meg nem lehet.

vmi hasonloara gondoltam:
*******
.filter( (a,b) --> a.next().equals(b.next()) )
.count()

Köszi elöre is!

[ Szerkesztve ]

(#10911) togvau válasza p76 (#10909) üzenetére


togvau
senior tag

Na ez az, gondoltam nyilván Integer ként teszi be, aztán néztem a numberformatexceptionokat @erdsddfffdass244-kre :)

hitler, sztálin, micro usb

(#10912) disy68 válasza Csaby25 (#10908) üzenetére


disy68
aktív tag

Írnak többmindent is, de ez a válasz, ahol a generált kódot megnézte a válaszoló.

A String osztály java alatt immutable, azaz értékadás után az objektum értéke nem változtatható. E miatt a String összefűzés String concat = "first" + " " + "last";
4 String objektum létrejöttét jelentené.

Erre rakták bele java 8 óta a fordítóba, hogy ahol ilyen található, azt optimalizálja. A String összefűzéseket helyettesíti StringBuilder-rel, ezért nem fog létrejönni annyi String objektum.

Vannak még egyéb String-ekkel kapcsolatos optimalizációk, amiket a fordító/futtató környezet csinál/alkalmaz, pl. a válaszokban említett internal pool, ahol kvázi cache-elve vannak String objektum példányok, java 8-as updattel jött a G1 GC-be, hogy tud deduplikálni String-eket. Java 9-ben pedig jött egy olyan, hogy azokat a szövegeket, amiket lehet, ISO-8859-1/Latin-1 kódolással tárolja a JVM UTF-16 helyett (1 vs 2 byte/karakter).

>javap -c Test Compiled from "Test.java" public java.lang.String makinStrings(); Code: 0: ldc #5; //String Fred 2: astore_1 3: new #6; //class java/lang/StringBuilder 6: dup 7: invokespecial #7; //Method java/lang/StringBuilder."<init>":()V 10: aload_1 11: invokevirtual #8; //Method java/lang/StringBuilder.append: (Ljava/lang/String;)Ljava/lang/StringBuilder; 14: ldc #9; //String 47 16: invokevirtual #8; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; 19: invokevirtual #10; //Method java/lang/StringBuilder.toString:()Ljava/lang/String; 22: astore_1 23: aload_1 24: iconst_2 25: iconst_5 26: invokevirtual #11; //Method java/lang/String.substring:(II)Ljava/lang/String; 29: astore_1 30: aload_1 31: invokevirtual #12; //Method java/lang/String.toUpperCase:()Ljava/lang/String; 34: astore_1 35: aload_1 36: invokevirtual #13; //Method java/lang/String.toString:()Ljava/lang/String; 39: areturn

[ Szerkesztve ]

“Yeah, well, you know, that’s just, like, your opinion, man.” — The Dude

(#10913) floatr válasza disy68 (#10912) üzenetére


floatr
veterán

A builder egy dolog, de a vége annak is egy új string objektum. A válasz a literálokban van, illetve a String.toString() this-el tér vissza, ott sincsen új objektum.

(#10914) Csaby25 válasza floatr (#10913) üzenetére


Csaby25
senior tag

Jól értem, hogy a String literal kompiláláskor jön létre a pool-ban, tehát még a metódus meghívása előtt? Ezért amikor meghívja a metódust már ott van pool-ban a String ezért nem hoz létre még egyett?

A kis emberek más emberekről beszélnek, a középszerű emberek eseményekről, a nagy emberek pedig ötletekről beszélnek.

(#10915) floatr válasza Csaby25 (#10914) üzenetére


floatr
veterán

Ennyire nem tudok részleteket, hogy mikor hol, de nem a metódus végrehajtásakor hozza létre, az csak felhasználja.

(#10916) p76 válasza Csaby25 (#10914) üzenetére


p76
senior tag

Igen, jól érted.
De nem kompiláláskor jön létre hanem amikor az adott osztályt, amiben van a string literal, betölti a classloader.

(#10917) Csaby25 válasza p76 (#10916) üzenetére


Csaby25
senior tag

"A String literal is created at compile time and the compiler never creates a duplicate String literal. How-
ever, a string with the new operator is created at runtime and it always creates a new string even if it is identical to
an already existing string." P.Sanghera SCJP exam.

A kis emberek más emberekről beszélnek, a középszerű emberek eseményekről, a nagy emberek pedig ötletekről beszélnek.

(#10918) floatr válasza Csaby25 (#10917) üzenetére


floatr
veterán

Ez káoszos magyarázat. A compiler kioptimalizálja a literálokat, de a tényleges objektumot a runtime futás közben hozza létre. Fordításkor nem lehet objektumot létrehozni. Ha viszont new operátort használsz, akkor ott explicite létrehozol egy objektumot.

(#10919) crocy


crocy
tag

public class Main {
public static void main(String[] args) {
A c = new B();
c.say();
System.out.println(c.num);
}
}

class A {
int num = 7;

void say(){
System.out.println("A");
}
}

class B extends A {

int num = 8;

void say(){
System.out.println("B");
}
}

Hi!
A fenti kodnal a c.num miert 7? Az override-olt metodus az ok, hogy dinamikusan a peldanyhoz köti, de a peldanyvaltozot mint ha statikusan kötne.
Kicsit belezavarodtam. Vki pls irjon mar par sort erröl.
köszi elöre is!

[ Szerkesztve ]

(#10920) fatal` válasza crocy (#10919) üzenetére


fatal`
titán

Ez gondolom valami iskolai példa :D

Fieldet nem lehet overrideolni, ilyenkor elrejted őket (gyakorlatilag függetlenül léteznek a memóriában). Mivel a c objektumod "A" típusú, ezért kiíráskor az A.num-ot írod ki. Ha átcastolod "B"-re a "c" objektumot, az eredmény 8 lesz.

Alapvetően ilyet nem csinálunk, szerintem egy normális IDE talán warningot is dob erre (de ebben nem vagyok biztos, rég nem javaztam).

A megfogalmazás nagyon messze van a pontostól, valószínűleg, akik napi szinten javaznak, majd kijavítanak/pontosítanak.

Illetve stackoverflow link a témában: [link]

(#10921) hcl


hcl
félisten
LOGOUT blog

Hello,

Hülye kérdések Androidra...

Írogatok egy alkalmazást, ami kamerát és Bluetooth használ, és van némi gondom.

Camera2 API használatával 7.x teszteszközön szépen megy a kamera. 9-esen nincs képe... Az engedélyt megkéri, de max. az Imageview jelenik meg feketén, néha még az sem.

Hogyan lehet megoldani, hogy a Bluetooth eszköz, amit használok, ha nincs kapcsolódva, vagy nem található, ne dőljön össze azonnal a progi? Nyilván a BT műveletek try-catch blokkban vannak, de semmilyen értelmes módszert nem találtam, hogy a catch esetén ne lépjen ki (azaz, ne hibával szálljon el).

Köszi minden ötletet :)

Mutogatni való hater díszpinty

(#10922) hefike


hefike
tag

Sziasztok! Van egy hf-om,abban kérem a segítségeteket.Be kellene olvasni adatokat,de 3 különböző .csv állományból.egy állományból világos,de a 3-at hogyan kell kezelni?Valaki tudna iránymutatást?köszi!

(#10923) mobal válasza hefike (#10922) üzenetére


mobal
MODERÁTOR

Írsz egy függvényt, ami megcsinálja a beolvasást, majd meghívód külön külön. Gondolom a csv fájlok ugyanolyan tartalmúak.

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#10924) hefike válasza mobal (#10923) üzenetére


hefike
tag

Kössz,nem ugyanolyan tartalmúak,de összefüggő tartalommal bírnak.tehát utánna a 3 file adataiból kell dolgozni

(#10925) Zsoxx válasza hefike (#10924) üzenetére


Zsoxx
senior tag

Konkrétan mi a probléma? Ha a fájlok adatszerkezete egyforma, akkor meghívod 3x a metódust.

(#10926) mobal válasza hefike (#10924) üzenetére


mobal
MODERÁTOR

Formailag vagy tartalmilag más? A formaiságra gondoltam. :)

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#10927) disy68 válasza hefike (#10922) üzenetére


disy68
aktív tag

Gondolom ezt úgy kell elképzelni, mint egy relációs adatbázis 3 tábláját. Vannak rekordok valami azonosító alapján kapcsolva egymáshoz.

Csinálsz a mezők alapján osztályokat. A kapcsolatok gondolom szülő gyerek (egy szülő több gyerek), ilyen esetben a szülő osztályban lesz egy kollekció, ami gyerekeket tartalmaz.

Beolvasod őket a fájlokból, majd az azonosítók alapján a gyerekeket belerakod a szülőkbe.

“Yeah, well, you know, that’s just, like, your opinion, man.” — The Dude

(#10928) Fransico


Fransico
tag

Sziasztok!

Hogy tudom eltüntetni a szóközt a sorok végéről egy 10*10-es szorzótábla kiíratásakor?

(#10929) Sirpi válasza Fransico (#10928) üzenetére


Sirpi
senior tag

if (j != 10) {
System.out.print(" ");
}

Hazudnék, ha cáfolnám annak tagadását, hogy ez az ital nem nélkülözi a koffeinmentesség megnemlétének hiányát. Na most akkor van benne koffein, vagy nincs?!

(#10930) hefike


hefike
tag

Köszi,végül mindhárom állománynak csináltam egy-egy classt,és külön listába olvasom be.de dob egy hibát,a dátummal nem stimmel vmi... :F gondolom,hogy a split a probléma,mert van 4 adat egy sorban pontosvesszővel elválasztva majd a dátum következik,de abban pontokkal van tagolva az év hónap nap.....tudtok segíteni mi a baj?köszi,ide teszem az erre vonatkozó kódrészletet,és hibaüzenetet.

public class Kutyak2 {

private int fajtaazon;
private int nevazon;
private int vizsgalatazon;
private int eletkor;
private LocalDate datum;

static final DateTimeFormatter formazo=DateTimeFormatter.ofPattern("yyyy.MM.dd");

public Kutyak2(String sor3) {

String[] tomb3=sor3.split(";");

this.vizsgalatazon=Integer.parseInt(tomb3[0]);
this.fajtaazon=Integer.parseInt(tomb3[0]);
this.nevazon=Integer.parseInt(tomb3[1]);
this.eletkor=Integer.parseInt(tomb3[2]);
this.datum=LocalDate.parse(tomb3[3],formazo);

Hibaüzenet:

Exception in thread "main" java.time.format.DateTimeParseException: Text '14' could not be parsed at index 0
at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2049)
at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1951)
at java.base/java.time.LocalDate.parse(LocalDate.java:428)
at kutyafajtak/kutyafajtak.Kutyak2.<init>(Kutyak2.java:25)
at kutyafajtak/kutyafajtak.Kutyakapp.main(Kutyakapp.java:31)

(#10931) disy68 válasza hefike (#10930) üzenetére


disy68
aktív tag

Exception in thread "main" java.time.format.DateTimeParseException: Text '14' could not be parsed at index 0
Azt mondja a '14'-et nem tudja értelmezni, mint dátum.

Biztos jó oszlopot nézel?
Biztos jók az adatok?

“Yeah, well, you know, that’s just, like, your opinion, man.” — The Dude

(#10932) bandi0000 válasza hefike (#10930) üzenetére


bandi0000
nagyúr

debug debug debug :D Ellenőrizd a tömböt mi van benne

Xbox One: bandymnc

(#10933) p76 válasza sztanozs (#10692) üzenetére


p76
senior tag

JEE fejlesztéshez még mindig a fizetős IntelliJ IDEA kell?

(#10934) sztanozs válasza p76 (#10933) üzenetére


sztanozs
veterán

Őszintén szólva fogalmam sincs.

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#10935) mobal válasza p76 (#10933) üzenetére


mobal
MODERÁTOR

Spring-gel dolgozom és tökéletes a CE.

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#10936) suits


suits
tag

Hali!

Valakinek nincs véletlenül valami gyűjteménye(akár csak pár darab) Java állásinterjú kérdésekből?Tudom hogy minden cégnél mást kérdeznek de érdekes lenne látnom párat,gyakorlásnak se lenne utolsó szerintem..

(#10937) Drizzt válasza mobal (#10935) üzenetére


Drizzt
nagyúr

A kerdes JEE volt. Azt azert eleg kellemetlen idea CE-vel nyomatni. 1-2 eve meg tuti nem tamogatta az app szerverre deploymentet sem. De Springet is joval egyszerubb Ultimate-tel. Viszont azert szukebb az ollo.

I am having fun staying poor.

(#10938) Zsoxx válasza suits (#10936) üzenetére


Zsoxx
senior tag

(#10939) mobal válasza suits (#10936) üzenetére


mobal
MODERÁTOR

[link]

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#10940) mobal válasza Drizzt (#10937) üzenetére


mobal
MODERÁTOR

Tudom, hogy JEE volt a kérdés (tudok olvasni), de azért gondoltam megosztom a tapasztalataim...

[ Szerkesztve ]

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#10941) floatr válasza Drizzt (#10937) üzenetére


floatr
veterán

Őszintén...?
DevOps-os szemmel nézve nem is szerencsés az IDE ilyen szintű integrációja. Ha nem oldható meg egy jól definiálható pipeline/toolchain segítségével automatizáltan még lokálisan is, akkor megette a fene az egészet.
Mondanám, hogy VS Code + gradle FTW, de a Red6 annyira elcseszett most valamit a Java bővítményen, hogy szinte használhatatlan. Addig meg Idea CE...

(#10942) Keem1


Keem1
addikt

Helló emberek! Kis segítséget kérnék olyan vállalkozó kedvű embertől, aki mind Java, mind C# programozásban otthon van.
Ezt a metódust kéne 1:1-ben Java-ra fordítani.

A Java-val csak érintőleges viszonyban vagyok, nem vagyunk se barátok, se rokonok. Amennyiben senki nem vállalja, vagy esetleg nem tudja, nincs gond, megoldom, csak az több idő (ami szintén van, csak akkor az majd a jövő hétre készül el, sok-sok guglizás után :DDD ). Tudom-tudom, a legjobb mindig az, ha magam oldom meg, ezzel abszolút tisztában vagyok.

Ennek ellenére ha valaki mégis átkonvertálná, annak nagyon köszi. :R

(#10943) Drizzt válasza floatr (#10941) üzenetére


Drizzt
nagyúr

Szerintem teljesen mindegy milyen szemmel nézed, a lényeg, hogy a developernek a lehető legkényelmesebb legyen a fejlesztés, annak az összes aspektusával, különös fókuszt téve a debuggingra, a build/deploy sebességre, stb. Milyen olyan pipeline-t tudsz mondani, ami lokálisan gyorsabb, egyszerűbb, szükség esetén gyorsabban testre szabható, mintha közvetlen a gépeden fut az app server, vagy a Spring boot app? Ha csinálsz egy dockerben levő Java EE szervert, akkor ahhoz, hogy oda deployolj, ott debugolj szintén kell ultimate edition. Ha egy app server image-ből kiindulsz dockerfile-ban, és mellé rakod az alkalmazásod a buildnél, az lassabb és körlülményesebb lesz jóval. Sajnos a "jó" devops pipeline-nak gyakran az a vége, hogy az emberek csak deploy + println-nel tudnak debuggolni.

Egyébként a legjobb debugging tool meg szerintem a unit teszt, két okból is: gyors, olcsó, és ha sikerül megfejteni a hibát, automatikusan van rá regression teszt. Csak sajnos nem mindig elég a hibához a unit test.

(#10940) mobal: Ok, de a kérdés kimondottan JEE volt. Egyébként a Springes véleményeddel is vitára kelnék. Munkahelyen ultimate-et használok, itthon CE-t.Az ultimate-ben sokkal több infót kapsz. Pl. autowiringnél már ki szokta jelezni, ha nincs autowire candidate, vagy több is van, s kéne qualifier. application.properties szerkesztése közben az éppen elérhető property-t felkínálja dokumentációstul. Van JPA support. És ezek most csak ilyen hasraütésszerű dolgok, lehetne még találni bőven különbséget. Meg így is vannak amik hiányoznak ultimate-ből is. Pl. custom autoconfigurable bean-ek felismerése autowiringnél, etc.

[CE vs ultimate]

I am having fun staying poor.

(#10944) mobal válasza Drizzt (#10943) üzenetére


mobal
MODERÁTOR

Nyilván tudom én is, hogy többet tud az Ultimate, de semmi olyat nem ami miatt __nem__ tudnál dolgozni.

Ezek a feature-ök pedig olyanok amivel találkoztam csak hibaüzenet formájában. :D

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#10945) floatr válasza Drizzt (#10943) üzenetére


floatr
veterán

Nincsen szükséged az IDE app server pluginjeire ehhez. Eleve el kell készíteni a deployment eszközöket, van remote debug, a pimpelt IDE csiricsáré funkciói meg igazából szépek meg jók, de maximum egy tapasztalatlan fejlesztőnek nyújt igazi segítséget.
Nem vagyok annak a híve, hogy szövegszerkesztővel kommandózzon az ember, de nincsen szükség egy ultimate-re ahhoz, hogy hatékonyan tudj dolgozni. Ellenben eltávolodsz az operations jellegű feladatoktól, és hajlamossá tesz arra, hogy kihátrálj minden olyan dologból, ami nem közvetlenül implementációs feladat.

(#10946) Csaby25


Csaby25
senior tag

Sziasztok! Elég sok elméletet átvettem már. (Alap java (SE), keretrendszerek nélkül...) Tudtok ajánlani olyan linket ahol konkrét feladatok vannak gyakorlás szempontjából?
Köszi!

[ Szerkesztve ]

A kis emberek más emberekről beszélnek, a középszerű emberek eseményekről, a nagy emberek pedig ötletekről beszélnek.

(#10947) Zsoxx válasza Csaby25 (#10946) üzenetére


Zsoxx
senior tag

Emelt szintű informatika érettségik (a 4. szokott lenni a programozási feladat)
ELTE zh-k

(#10948) axioma válasza Zsoxx (#10947) üzenetére


axioma
veterán

Koszi, ez altalaban is hasznos! A hivatalos helyen sok kattintassal lehet csak elerni a feladatsorokat.

(#10949) Bici


Bici
félisten

Sziasztok!

Adott egy pucér java file-okból álló eclipse project, ahol az eclipse részek hibásak lettek, és be sem lehet tölteni már.

Ezeket a java class-okat szeretném egy Maven project keretein belül IntelliJ-be átültetni.
Ennek mi a legegyszerűbb módja?
Leginkább az érdekelne, hogy hogy lesz működőképes az a sok beimportált cucc.
Dolgoztam már Java kódon, de a maga a project file létrehozása és felépítése új nekem.

Köszi előre is!

[ Szerkesztve ]

Eladó régi hardverek: https://hardverapro.hu/apro/sok_regi_kutyu/friss.html

(#10950) togvau


togvau
senior tag

Én nem értem ezt a ThreadLocal témát, vagy is azt nem, hogy mire jó. Én ott tartok még, hogy static az elérhető a threadek közt, nem static mező meg minden threadnek saját, mivel a thread is ugyan olyan példány lesz, mint bármelyik osztály.
Vagy ez csak annyi, hogy ne kelljen cloneolgatni valahol, ha mégsem static dolgot használ?

hitler, sztálin, micro usb

Útvonal

Fórumok  »  Szoftverfejlesztés  »  Java programozás (kiemelt téma)
Copyright © 2000-2024 PROHARDVER Informatikai Kft.