Någon som vet om det finns någon klass man kan använda som bytebuffer alltså typ som en byte array men man som har funktioner som insert. Jag har försökt leta igenom alla klasser efter något som jag kan använda men det närmaste jag har kommit är ArrayList. Det är helt enkelt en smaksak. Och krav på prestanda. ArrayList är ju ett allternativ, HashTables lika så. Eller så gör du en egen class som bara tar emot din typ. Vilket gör att du enkelt kan bygga den precis så som du vill ha den. Och då ange exakt den datatyp du använder dig av, vilket ökar prestandan jämfört med en ArrayList som hanskas med typen object. Hur bygger man på enklast sätt en sådan klass som tillåter att man sätter in nya värden och så enklast? Det är ganska viktigt att den inte tar upp alltför mycket extra minne också, du behöver inte skriva något exempel bara peka lite i rätt riktning =) Beror helt och hållet på vad det är du ska göra. Det är hela tiden en kamp mellan Minne Vs. Prestanda. Prestanda kan man ju ganska enkelt mäta med en vanlig timer men finns det något enkelt sätta att kolla hur mycket minnesutrymme en klass tar? typ sizeof... Prestansda är inte så enkel att mäta som du vill ha det till. Du utgår ifrån att alla operationer har en linjärtidskurva, vilket definitivt inte är sant i alla fall. Det finns funktioner som har logaritmisktidskurva oxå. Skriver men en klass där metoder anropar varandra etc så är det inte så trivialt att mäta alltid. mmm har tydligen glömt (förträngt) en hel del från min algoritmkurs, visserligen två år sedan nu men ändå. =)Bytebuffer
Finns det någon bättre klass att använda eller ska man använda ArrayList eller ska man kanske till och med göra en egen klass?Sv: Bytebuffer
//Johan NSv: Bytebuffer
Sv: Bytebuffer
Metod #1
Skapa en klass som har metoderna du behöver (Insert, Remove, Count etc) som i nternt arbetar med en byte[] array. Problemet här är prestanda, framför allt när du
ska stoppa in ett värde mitt i en array (mellan 2 befintliga element) eftersom du
måste flytta alla andra element i arrayn, vilket är prestanda krävande. Du måste
även ta hänsyn till att din array måste kunna växa, och det finns olika sätt att hantera
detta på, t.ex att den skall växa när det finns X platser kvar och att den då skall växa
med Y element. Det är juh inte vettigt att öka storleken med 1 hela tiden, utan kanske
med 10, men samtidigt kostar detta lite mer minne.
Metod #2
Skapa en klass som har samma metoder som ovan, fast denna gången använder du
dig av en länkadlista internt, som lagrar Byte information i sina noder. Fördelen här är
prestanda när du skall stoppa in och ta bort element mitt i listan. Här behöver du aldrig
själv sköta resize, eftersom listan växer o krymper i takt med att du lägger till och tar
bort element i den. Nackdelen är att det tar lite mer minne att lagra informationen i
noder.
Denna typ av information utbildas nästan alla ingenjörer inom data med, och det
borde inte vara svårt för dig att hitta föreläsninga slides etc på nätet om du vill veta
mer om tixkomplexitet (ordo) för båda metoderna och dess olika funktioner =)
----
<b>Andreas Håkansson
Student of Software Engineering</b>Sv: Bytebuffer
Sv: Bytebuffer
Minne kan du juh där emot mäta lite enklare. Skapa lagra ett element, kolla hur mycket minne som går åt.,. lagra X element kolla, lagra Y element kolla. Då kan du
enkelt se.
---
<b>Andreas Håkansson
Student of Software Engieering</b>Sv: Bytebuffer