Telung cara kanggo nemokake unsur ing array Jawa
Sumber:
Asyncq Kiriman iki bakal mbantu sampeyan luwih ngerti macem-macem cara kanggo nggoleki unsur ing array ing Jawa. Nemokake unsur tartamtu ing sakumpulan nilai minangka operasi sing umum banget lan asring digunakake ing pangembangan piranti lunak. Ana macem-macem pendekatan kanggo ngatasi masalah iki, saka prasaja nganti optimal. Ayo padha ndeleng.
Input data
Array input ngemot data id primitif lan kita kudu ngerti yen ngemot id->3.
int[] ids = { 1,2,13,14,15,3,10,11,12,4,5,6,7,8,9 };
int inputId = 3;
Cara 1 (simple)
- We ngunjungi kabeh unsur Uploaded, siji unsur ing wektu.
- Kajaba iku, kita nglacak status unsur target yen ana ing array.
- Sanalika kita nemokake unsur iki, kita ngalih status saka palsu kanggo bener .
- Sawise daur ulang rampung, kita bali gendera status.
boolean valExist = false;
for (int id : ids) {
if (inputId == id) {
valExist = true;
}
}
return valExist;
Solusi iki bisa digunakake, nanging ora efisien banget. Yen sampeyan ndeleng kondisi
yen , sampeyan bakal ngerti yen kita lagi nyoba kondisi iki kanggo kabeh unsur. Ayo dadi ngomong unsur kita lagi looking for iku unsur pisanan, nanging daur ulang kita isih bakal terus kanggo mbukak kanggo kabeh unsur. Ing kene bakal luwih wicaksana kanggo metu saka daur ulang sanalika kita nemokake unsur kasebut. Kanthi nindakake iki, kita bakal ngirit petungan nalika unsur sing kita goleki ora ana ing posisi pungkasan.
boolean valExist = false;
for (int id : ids) {
if (inputId == id) {
valExist = true;
break;
}
}
return valExist;
Sampeyan bisa nggawe kode luwih ringkes kanthi nggunakake
bali . Kita bisa bali
bener sanalika kita ndeleng unsur kita lagi looking for, digunakake kita bali
palsu sanalika daur ulang rampung. Lan kita ora perlu nggawe lan njaga variabel negara.
for (int id : ids) {
if (inputId == id) {
return true;
}
}
return false;
Metode 2
- Kita bisa nggunakake ArrayList sing ngemot metode sing kanthi gawan nggoleki unsur target ing dhaptar.
- Amarga cara iki diwenehake dening List , kita kudu ngowahi array primitif dadi dhaptar.
- Kita bisa nggunakake senar lambda siji sing ngowahi primitif kanggo jinis obyek lan nggawe dhaptar saka iku.
return Arrays.asList(Arrays.stream(ids).boxed().toArray())
.contains(inputId);
- Kita bisa nggunakake Java 8 Stream API kanggo nggawe kode kita fungsi lan luwih cendhek.
- Kanggo mangerteni carane API Stream bisa digunakake karo stream, kita kudu ngowahi array input dadi stream.
- Arrays.stream njupuk array input lan ngowahi dadi stream.
- Saiki kita duwe benang, kita bisa nggunakake akeh cara sing migunani, salah sijine yaiku anyMatch . Iki ngasilake unsur sing cocog karo predikat (id == inputId) .
- Kabeh iki ndadekake kode kita luwih cendhek lan luwih gampang diwaca.
return Arrays.stream(ids)
.anyMatch(id -> id == inputId);
Cara 3 (dioptimalake)
Ya, kode sing ditampilake ing ndhuwur bisa digunakake lan gampang diwaca, nanging kita isih kudu ngunjungi lan mbandhingake saben unsur ing aliran kasebut.
- Yen memori ora dadi masalah lan kita pengin ngoptimalake petungan, mula salah sawijining perkara sing bisa ditindakake ing kene yaiku nggawe set saka array input.
- Kita bisa maneh nggunakake kode gaya fungsional kanggo ngowahi array primitif menyang Set a .
- Saiki kita duwe Set , kita bisa nelusuri unsur sajrone wektu sing tetep.
S
et<Integer> idsSet = Arrays.stream(ids).boxed().collect(Collectors.toSet());
return idsSet.contains(inputId);
Bonus
Nggoleki unsur siji bisa dianggep minangka operasi umum, nanging sing luwih umum yaiku nggoleki macem-macem unsur ing array. Ing kasus iki, yen kita ora nggunakake
Set , kita bakal duwe rong puteran lan kerumitan wektu bakal nambah kanggo multiply dawa rong koleksi. Ing ngisor iki conto ing ngendi kita ngowahi salah siji saka susunan minangka pesawat lan banjur iterate liwat array liyane lan nindakake panelusuran ing operasi pesawat. Kanthi nindakake iki, kita nambah memori lan ing wektu sing padha ngirit petungan.
int[] targetIds = { 1, 3, 6, 88, 999, 34, 44, 55};
int[] ids = { 1,2,13,14,15,3,10,11,12,4,5,6,7,8,9 };
Set<Integer> idsSet = Arrays.stream(ids).boxed().collect(Collectors.toSet());
return Arrays.stream(targetIds)
.boxed()
.filter(id -> !idsSet.contains(id))
.mapToInt(a -> a)
.toArray();
Apa Java Thread Lokal lan carane nggunakake
Sumber:
Sedheng Ing artikel iki, kita bakal ndeleng Java Thread Local lan cara nggunakake kanthi efektif ing aplikasi Java. Java
Thread Local minangka fitur kuat sing ngidini pangembang nggawe variabel mung kanggo thread tartamtu. Iki tegese saben utas bisa duwe salinan variabel dhewe, lan owah-owahan sing digawe menyang variabel ing siji utas ora bakal mengaruhi nilai ing utas liyane.
Apa Thread Lokal
Thread Local minangka kelas ing Java API sing ngidini sampeyan nggawe variabel sing lokal kanggo thread tartamtu. Tegese, saben thread duwe salinan variabel dhewe, lan owah-owahan sing digawe kanggo variabel ing siji thread ora mengaruhi nilai ing thread liyane. Iki ndadekake
Thread Local dadi solusi sing cocog kanggo nyimpen data khusus thread kayata informasi otentikasi pangguna, sambungan database, utawa informasi khusus thread liyane.
Carane Thread Lokal Works in Java
Kanggo nggunakake
Thread Local ing aplikasi Java, sampeyan kudu nggawe conto kelas
Thread Local . Iki bisa ditindakake kanthi nelpon konstruktor
ThreadLocal , sing bakal nggawe conto anyar saka kelas iki. Sabanjure, kanthi nggawe obyek
Thread Local , sampeyan bisa nggunakake kanggo nyimpen lan njupuk data khusus thread. Iki conto carane nggunakake
Thread Local ing aplikasi Java:
public class MyThreadLocalClass {
private static final ThreadLocal<String> threadLocal = new ThreadLocal<>();
public static void set(String value) {
threadLocal.set(value);
}
public static String get() {
return threadLocal.get();
}
}
Ing conto iki, kita nggawe obyek
Thread Local disebut
threadLocal saka jinis
String . Kita uga nggawe rong cara:
set () lan
entuk () sing ngidini kita nyimpen lan njupuk nilai variabel
Thread Local . Kanggo nyimpen nilai ing variabel
Lokal Utas , kita mung nelpon cara
set () lan pass ing Nilai kita arep kanggo nyimpen. Contone, kita bisa nelpon
MyThreadLocalClass.set("Hello, World!") kanggo nyimpen string
"Hello, World!" ing variabel
Utas Lokal . Kanggo entuk nilai variabel
Thread Local , kita mung nelpon metode
get() . Contone, kita bisa nelpon
nilai String = MyThreadLocalClass.get () kanggo entuk nilai variabel
Thread Local .
Rekomendasi kanggo nggarap Thread Local
Sanajan
Thread Local bisa dadi alat sing kuat ing aplikasi Java, penting kanggo nggunakake kanthi bener supaya ora ana masalah. Ing ngisor iki sawetara pedoman sing kudu dielingake nalika nggunakake
Thread Local :
- Gunakake Thread Local mung yen perlu: mung kanggo data khusus thread. Yen data kasebut ora spesifik, kudu disimpen kanthi cara liya.
- Ngindhari panggunaan memori sing akeh banget: Thread Local bisa nggunakake jumlah memori sing akeh yen ora digunakake kanthi ati-ati. Pesthekake mbusak variabel Lokal Utas nalika ora dibutuhake maneh kanggo ngindhari panggunaan memori sing akeh banget.
- Gunakake Thread Local kanthi ati-ati ing lingkungan multi-threaded: penting kanggo mangerteni risiko lan watesan sing potensial. Priksa manawa nyoba kode sampeyan kanthi teliti kanggo mesthekake yen Thread Local bisa digunakake kaya sing dikarepake ing lingkungan tartamtu sampeyan.
Kesimpulan
Java
Thread Local minangka alat sing apik sing ngidini pangembang nggawe variabel mung kanggo utas tartamtu. Nggunakake
Thread Local , sampeyan bisa nyimpen data khusus thread, kayata informasi otentikasi pangguna, sambungan database, utawa informasi khusus thread liyane. Sanajan
Thread Local bisa dadi alat sing kuat, penting kanggo nggunakake kanthi bener kanggo ngindhari masalah potensial. Kanthi ngetutake praktik paling apik lan nguji kode sampeyan, sampeyan bisa nggunakake kanthi efektif kanggo ningkatake kinerja lan linuwih aplikasi Java.
GO TO FULL VERSION