我有一个VO的arraylist.这些对象具有许多属性和相应的get/set方法.我想根据我将在运行时获得的属性对此数组列表进行排序.让我详细解释一下.我的VO是这样的
public class Employee {
String name;
String id;
private String getName() {
return name;
}
private String getId() {
return id;
}
}
Run Code Online (Sandbox Code Playgroud)
我将在运行时获取一个字符串'sortType',它可以是'id'或'name'.我想根据字符串的值对列表进行排序.
我试图一起使用比较器和反射,但没有运气.可能是我没有正确使用它.我不想使用if循环并创建新的比较器类.还有其他想法吗?
try catch应该在新类中.这是工作代码.如果你想为比较器使用一个单独的类,请在@ Bohemian的评论中找到它.
String sortType = "name"; // determined at runtime
Collections.sort(results, new Comparator<Employee>() {
public int compare(Employee c1, Employee c2) {
try{
Method m = c1.getClass().getMethod("get" + StringUtils.capitalize(sortType));
String s1 = (String)m.invoke(c1);
String s2 = (String)m.invoke(c2);
return s1.compareTo(s2);
}
catch (Exception e) {
return 0;
}
}
});
Run Code Online (Sandbox Code Playgroud) 我知道Java不支持多继承,因为不允许扩展多个类.我只是想知道我的问题是否有解决方法.
我有一个名为CustomAction需要扩展两个抽象类的类,BaseAction并且QuoteBaseAction.我不能改变任何这些抽象类,并将其他类扩展.
这些抽象类具有我需要使用的方法实现.我也无法创建接口,因为接口只能扩展另一个接口.
有任何想法吗?
我需要迭代对象数组并为每个对象进行 API 调用。根据响应中的对象数量,我正在创建新对象并将其推入数组中。下面是示例代码。例如,如果最初有 2 个提供商,每个提供商都有 2 个位置,updatedProviderList则将有 4 个提供商。这工作正常。
问题是,updateProvidersInState只有在所有 API 调用和与之相关的逻辑完成后才必须调用。我已尝试使用如下所示的索引,但它不起作用。有什么方法可以updateProvidersInState在所有 API 调用完成后才调用?
let providers = []; //assume this is already populated
let updatedProvider;
let updatedProviderList;
providers.forEach((prv, index) => {
this.dataService.getLocation(prv.id).subscribe((response: LocationResults) => {
response.locations.forEach((location, i) => {
updatedProvider = cloneDeep(prv);
updatedProvider.location = location;
updatedProviderList.push(updatedProvider);
if (index === providers.length - 1 && i === response.length - 1) {
this.updateProvidersInState(updatedProviderList);
}
});
});
});
Run Code Online (Sandbox Code Playgroud) 我有一个组件,它有一个带有复选框的 mat-table,使用 SelectionModel。这是我必须检索所选数据的代码。
fileSelect = new SelectionModel<FileInfo>(true, []);
Run Code Online (Sandbox Code Playgroud)
该方法在表单的 ngSubmit 中调用。
sendFileInterrupt() {
let selectedFileIds: string[];
for (let item of this.fileSelect.selected) {
console.log(item.fileId);
selectedFileIds.push(item.fileId);
}
Run Code Online (Sandbox Code Playgroud)
选定的 fileId 已登录到控制台,但是在尝试将其添加到 selectedFileIds 数组时,出现错误
无法读取未定义的属性“推送”
在将数据推入数组之前,我是否必须实例化或初始化数组?
我有一个 angular 6 应用程序,它有一个 Mat Table。表的数据填充如下。排序适用于字段positionand name,但不适用于weight和symbolwhich 是detail对象的一部分。我也尝试将列命名为detail.weightin displayedColumns,matColumnDef但没有运气。请告知我做错了什么?
const ELEMENT_DATA: PeriodicElement[] = [
{position: 1, name: 'Hydrogen', detail: {weight: 4.0026, symbol: 'He'}},
{position: 2, name: 'Helium', detail: {weight: 4.0026, symbol: 'He'}},
]
displayedColumns: string[] = ['position', 'name', 'weight', 'symbol'];
Run Code Online (Sandbox Code Playgroud)
模板
<ng-container matColumnDef="weight">
<th mat-header-cell *matHeaderCellDef mat-sort-header> Weight </th>
<td mat-cell *matCellDef="let element"> {{element.detail.weight}} </td>
</ng-container>
Run Code Online (Sandbox Code Playgroud)
这是该问题的stackblitz url
https://stackblitz.com/edit/angular-kumdeq
我有一个db列report_name,它的值与此类似
000007091_PaymentRegisterReport _D x3A 975844_2012-12-26.XLS
Run Code Online (Sandbox Code Playgroud)
我需要在所有具有XLS扩展名的PaymentRegisterReport中删除_D之前的空格.有人可以帮我使用regex在update语句中使用regexp_replace函数吗?
我需要找到启动并运行的weblogic实例.
我的unix框同时包含java 5和6,并且有多个weblogic域.
我需要杀死一个特定域的java实例.
这是ps -ef |的输出 grep java命令,但无法确定哪个PID是哪个域实例.
请帮忙.
ps -ef | grep java
weblogic 16374 21956 0 23:30:33 ? 1:00 /app/bea/jdk1.6.0_33/bin/java -Xmx1024m -Xms256m -Dlog4j.configuration=file:///
root 22733 22732 0 Apr 29 ? 123:29 ../jre/bin/java -da -server -Dtw.server=false -Djava.security.manager=com.tripw
weblogic 16862 21956 0 23:31:13 ? 2:04 /app/bea/jdk1.6.0_33/bin/java -Xmx1024m -Xms256m -Dlog4j.configuration=file:///
weblogic 8445 21956 0 18:32:33 ? 3:29 /app/bea/jdk1.6.0_33/jre/bin/java -Dweblogic.log.StdoutSeverity=Debug -Dweblogi
weblogic 16529 21956 0 May 29 ? 88:28 /app/bea/home/jdk150_15/bin/java -server -Xms1024m -Xmx1024m -XX:MaxPermSize=25
weblogic 15357 5681 0 00:07:14 pts/4 0:00 …Run Code Online (Sandbox Code Playgroud) 我有一个像下面这样的字符串数组。
ABC
QRS
DEF
HIJ
TUV
KLM
NOP
Run Code Online (Sandbox Code Playgroud)
我需要按字母顺序在 javascript 中对这个数组进行排序,除了几个已知的值。即我需要 DEF 和 NOP 出现在前 2 个位置,并按字母顺序按升序对数组的其余部分进行排序。这是我按字母顺序对整个数组进行排序所写的内容,现在我需要前 2 个位置的 2 个值。
array.sort(function(a,b){return ((a < b) ? -1 : (a > b) ? 1 : 0)});
Run Code Online (Sandbox Code Playgroud)
预期结果。
DEF
NOP
ABC
HIJ
KLM
QRS
TUV
Run Code Online (Sandbox Code Playgroud)
数组的内容是动态的,所以如果数组有 DEF 或 NOP,那么它们应该在最上面,否则应该按字母顺序排序。解决这个问题的最佳方法是什么?
angular ×3
java ×3
sorting ×2
arrays ×1
comparator ×1
grep ×1
inheritance ×1
javascript ×1
list ×1
observable ×1
oracle ×1
reflection ×1
regex ×1
rxjs ×1
sql ×1
typescript ×1
unix ×1
weblogic ×1