私の目的は、動的に値をリンクリストに挿入することです。その後、ソートや検索アルゴリズムをリスト上で実行したい。
さらに、Reflectionを使用して実行時に(ユーザー入力に基づいて)クラスを作成しています。
その後、私はJSON Arrayでユーザーから提供されたデータを使用してクラスのインスタンスを作成し、インスタンスをGenericList
に挿入します。
次はGeneric Linked List
のコードです。ユーザからの動的フィールドに基づいてリンクリストをソート
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;
}
}
これは私がクラスのインスタンスを作成してGenericList
に挿入する方法です。
//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));
}
私は正常GenericList
にしてデータを挿入することですが、挿入した後、私は後で昇順で、field1
に基づいてデータをソートします。
私はそれを解決するのに数時間を費やしましたが、ソートを成功させることができませんでした。