在没有数据库的情况下查询 Java 对象
注意:小问题很长。我要给一个赏金,以获得最好的答案。
我试图做的是在对象上查询。以下是详细信息。我有一个名为 .所以我解析了它并保留在列表中employee.txt
public static List<Employee> employeeList = new LinkedList<>();
然后这是我的查询逻辑。
从用户那里获取查询,然后对其进行分析。以下是通过列表进行查询的逻辑。
例如:这是查询
select * from Employee where id > 10
我的代码
String valueToCompare = split[5]; //10
EmployeeCriteria criteria = new EmployeeCriteria(
isId, isName, isSalary, expression,
valueToCompare);
result = EmployeeData.findAll(
EmployeeData.employeeList, criteria);
这是 findAll 方法
public static List<Employee> findAll(List<Employee> coll,
ISearch<Employee> chk) {
List<Employee> l = new LinkedList<Employee>();
for (Employee obj : coll) {
if (chk.search(new Employee(obj)))
l.add(obj);
}
return l;
}
这是我的搜索方法
/**
* Based on the type provided and for given expression it check against the
* given value
*/
@Override
public boolean search(Employee obj) {
if (expression.equals(EQUAL)) {
if (isId()) {
if (obj.getId() == Long.parseLong(valueToCompare)) {
return true;
}
} else if (isName()) {
if (obj.getName().equals(valueToCompare)) {
return true;
}
} else if (isSalary()) {
if (obj.getSalary() == Long.parseLong(valueToCompare)) {
return true;
}
} else {
System.err.println(UserMessage.INVALIDCOLUMN_NAME);
}
} else if (expression.equals(NOT_EQUAL)) {
if (isId()) {
if (!(obj.getId() == Long.parseLong(valueToCompare))) {
return true;
}
} else if (isName()) {
if (!(obj.getName().equals(valueToCompare))) {
return true;
}
} else if (isSalary()) {
if (!(obj.getSalary() == Long.parseLong(valueToCompare))) {
return true;
}
} else {
System.err.println(UserMessage.INVALIDCOLUMN_NAME);
}
} else if (expression.equals(GREATER)) {
if (isId()) {
if ((obj.getId() > Long.parseLong(valueToCompare))) {
return true;
}
} else if (isSalary()) {
if ((obj.getSalary() > Long.parseLong(valueToCompare))) {
return true;
}
} else {
System.err.println(UserMessage.INVALIDCOLUMN_NAME);
}
} else if (expression.equals(LESSER)) {
if (isId()) {
if ((obj.getId() < Long.parseLong(valueToCompare))) {
return true;
}
} else if (isSalary()) {
if ((obj.getSalary() < Long.parseLong(valueToCompare))) {
return true;
}
} else {
System.err.println(UserMessage.INVALID_IDENTIFIER);
}
}
return false;
}
如果您想查看任何其他代码,请告诉我。
我只想知道,
首先,使用正确的数据结构吗?这是表现良好吗?任何增强功能以表现良好?LinkedList
有什么更好的方法可以实现这一目标吗?
以下是几个示例查询:
select * where ID > 100
select * where Name != Ramesh
select * where Salary < 500000
select Name order by Name
select ID
感谢您的任何帮助。赏金将在2天后提供。我现在做不到。
注意2:这是一个测试,用于检查我的数据管理技能,我不能使用任何数据库。