Mein Ziel ist es, Werte dynamisch in die Verknüpfte Liste einzufügen. Und danach möchte ich Sortier- oder Suchalgorithmen auf der Liste ausführen.
Zusätzlich erstellt ich Klasse zur Laufzeit (basierend auf Benutzereingabe) mit Reflection.
Danach verwende ich Daten vom Benutzer in JSON Array zur Verfügung gestellt, um Instanzen der Klasse zu erstellen, und dann füge ich die Instanzen in die GenericList
.
Folgendes ist der Code für die Generic Linked List
.Sortierte Verknüpfungsliste basierend auf dynamischem Feld von Benutzer
public class LinkedListNode<T> implements Serializable {
private T value;
private LinkedListNode<T> next;
public LinkedListNode(T value) {
this.value = value;
}
public void setNext(LinkedListNode<T> next) {
this.next = next;
}
public LinkedListNode<T> getNext() {
return next;
}
public T getValue() {
return value;
}
}
public class GenericList<T> implements Serializable {
private LinkedListNode<T> first = null;
public void insert(LinkedListNode<T> node) {
node.setNext(first);
first = node;
}
public void emptyList(){
first = null;
}
public void remove(){
if(first.getNext()!=null)
first = first.getNext();
else first = null;
}
}
Und das ist, wie ich Instanzen der Klasse erstellen und an die GenericList
einzufügen.
//dataToInsert => is the JSONArray. => [{field1:"value1",field2:"value1"},{field1:"value2",field2:"value2"},{field1:"value3",field2:"value3"}]
//classLoaded => package com.LinkedAnalyzerAdapter.saveTestClasses; public class order implements java.io.Serializable {public String field1;public String field2;}
Class<?> classLoaded = classLoader.loadClass("com.LinkedAnalyzerAdapter.saveTestClasses.order");
GenericList<Object> list = new GenericList<Object>();
for (int i = 0; i < dataToInsert.length(); i++) {
JSONObject jsonObj = new JSONObject();
jsonObj = dataToInsert.getJSONObject(i);
Object obj = classLoaded.newInstance();
Field[] fs = classLoaded.getDeclaredFields();
for (Field field : fs)
{
field.setAccessible(true);
Object fieldValue = jsonObj.get(field.getName());
field.set(obj, fieldValue);
}
list.insert(new LinkedListNode<Object>(obj));
}
Ich bin erfolgreich in der Lage Daten in zu GenericList
einzufügen, aber nach dem Einsetzen mag ich später die Daten über field1
, in aufsteigender Reihenfolge sortieren.
Ich habe Stunden damit verbracht, es zu lösen, aber nicht erfolgreich Sortierung zu erreichen.