Anda di halaman 1dari 5

Nama : Riyan Sanjaya

NPM : 188160079

Membuat sebuah program array dan linked list pada java :

Codingan program array contignous :

package com.company;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;

public class Main {


public static void main(String... args) {
Runtime rt = Runtime.getRuntime();
long used1 = rt.totalMemory() - rt.freeMemory();
long start = System.nanoTime();
int length = 100 * 1000 * 1000;
PointCount pc = new PointCountImpl(length);
for (int i = 0; i < length; i++) {
pc.index(i);
pc.setX(i);
pc.setY(-i);
pc.setCount(1);
}
for (int i = 0; i < length; i++) {
pc.index(i);
if (pc.getX() != i) throw new AssertionError();
if (pc.getY() != -i) throw new AssertionError();
if (pc.getCount() != 1) throw new AssertionError();
}
long time = System.nanoTime() - start;
long used2 = rt.totalMemory() - rt.freeMemory();
System.out.printf("\n Membuat array %,d bekas %,d byte tumpukan %.1f
detik untuk mengatur dan mendapatkan%n",
length, (used2 - used1), time / 1e9);
}
}

interface PointCount {
// mengatur indeks elemen yang dimaksud.
public void index(int index);
public double getX();
public void setX(double x);
public double getY();
public void setY(double y);
public int getCount();
public void setCount(int count);
public void incrementCount();
}

class PointCountImpl implements PointCount {


static final int X_OFFSET = 0;
static final int Y_OFFSET = X_OFFSET + 8;
static final int COUNT_OFFSET = Y_OFFSET + 8;
static final int LENGTH = COUNT_OFFSET + 4;
final ByteBuffer buffer;
int start = 0;

PointCountImpl(int count) {
this(ByteBuffer.allocateDirect(count *
LENGTH).order(ByteOrder.nativeOrder()));
}

PointCountImpl(ByteBuffer buffer) {
this.buffer = buffer;
}

@Override
public void index(int index) {
start = index * LENGTH;
}

@Override
public double getX() {
return buffer.getDouble(start + X_OFFSET);
}

@Override
public void setX(double x) {
buffer.putDouble(start + X_OFFSET, x);
}

@Override
public double getY() {
return buffer.getDouble(start + Y_OFFSET);
}

@Override
public void setY(double y) {
buffer.putDouble(start + Y_OFFSET, y);
}

@Override
public int getCount() {
return buffer.getInt(start + COUNT_OFFSET);
}

@Override
public void setCount(int count) {
buffer.putInt(start + COUNT_OFFSET, count);
}

@Override
public void incrementCount() {
setCount(getCount() + 1);
}
}
ouput program dan screenshot program tersebut :
Codingan program linkedlist dengan java :
package com.company;
import java.util.*;

public class Main {


public static void main(String args[]) {

// Linked List deklarasi


LinkedList<String> linkedlist = new LinkedList<String>();

// tambahkan (String Element) digunakan untuk menambahkan elemen ke


daftar tertaut
linkedlist.add("Item1");
linkedlist.add("Item5");
linkedlist.add("Item3");
linkedlist.add("Item6");
linkedlist.add("Item2");

// Tampilkan Konten Daftar Tertaut

System.out.println("\nKonten Linked List: " +linkedlist);

// Tambahkan Elemen Pertama dan Terakhi


linkedlist.addFirst("Item Pertama");
linkedlist.addLast("Last Item");
System.out.println("\nKonten LinkedList setelah penambahan: "
+linkedlist);

// cara mendapatkan dan mengatur Nilai


Object firstvar = linkedlist.get(0);
System.out.println("element Pertama: " +firstvar);
linkedlist.set(0, "Mengubah item pertama");
Object firstvar2 = linkedlist.get(0);
System.out.println("elemen pertama setelah pembaruan dengan metode
yang ditetapkan : " +firstvar2);

// Hapus elemen pertama dan terakhir


linkedlist.removeFirst();
linkedlist.removeLast();
System.out.println("LinkedList setelah penghapusan elemen pertama dan
terakhir : " +linkedlist);

// Tambahkan ke Posisi dan hapus dari posisi


linkedlist.add(0, "Item baru ditambahkan");
linkedlist.remove(2);
System.out.println("Konten akhir : " +linkedlist);
}
}
output program dan screenshot codingan :