说我有一个数组列表echo preg_replace_callback("/\"([^\"]*)\":/", function($m){
return str_replace("-", "_", $m[0]);
}, $jsonStr);
myObject类看起来像:
MyArrayList<MYObject>
我的虚拟数据如下所示:
public class myObject
{
String name;
Int age;
String : city;
}
现在我想按此顺序对 myArraylist (其中包含上述数据)进行排序 -
name : martin , age : 20 , city : NY
name : felix , age : 19 , city : LA
name : brian , age : 21 , city : NY
name : brian , age : 19 , city : NY
你可以看到上面的数据分为两种方式 - 首先是城市,然后是年龄,所以这就是我想做的事情,我想要排序按顺序排列arrayList然后我想通过保持第一顺序排序另一个顺序
任何人都知道我该怎么做?那么请让我知道
如果我的问题不够明确,请告诉我我会解决它
答案 0 :(得分:2)
您有两种选择,基本上是等价的:
A
函数下是等价的,则保持两个元素B
和<
的相对顺序。这样,如果您首先按年龄排序,当您按城市再次排序并且两个元素具有相同的城市时,它们的相对顺序将由输入顺序确定,因此它们将按年龄排序。A < B
或A.city != B.city && A.city < B.city
时显示A.city = B.city && A.age > B.age
。请注意,Java Collections.sort
保证稳定,因此请选择更适合您需求的策略。
答案 1 :(得分:2)
首先,类应具有描述性名称,类名应以大写字符开头。所以我打电话给你的班级人员
您需要创建一个自定义Comparator
以供排序实用程序使用。
对于可重复使用的解决方案,您可以使用Bean Comparator和Group Comparator。
BeanComparator
允许您对对象中的任何属性进行排序
GroupComparator
允许您将多个Comparator
合并为一个Comparator
。
所以基本逻辑是:
BeanComparator city = new BeanComparator(Person.class, "getCity");
BeanComparator age = new BeanComparator(Person.class, "getAge");
GroupComparator gc = new GroupComparator(city, age);
Collections.sort(arrayList, gc);
答案 2 :(得分:2)
您可以创建比较器,首先按城市进行比较,然后按年龄进行比较。像这样:
getSymbol2
修改强>
我使用&#34; compareTo&#34; Integer类的方法,您不能在<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<div id ="mainContent">
<form action="https://s3.amazonaws.com/{!awsKeySet.Name}" method="post" enctype="multipart/form-data" id="uploadForm">
<input type="hidden" name="key" id="key" />
<input type="hidden" name="AWSAccessKeyId" value="{!awsKeySet.AWS_AccessKey_Id__c}" />
<input type="hidden" name="policy" value="{!policy}" />
<input type="hidden" name="signature" value="{!signedPolicy}" />
<input type="hidden" name="acl" value="{!acessType}" />
<input type="hidden" name="Content-Type" value="{!Content_Type}" />
<!--input type="hidden" name="success_action_status" value="201" /-->
<!--input type="hidden" name="success_action_redirect" value="{!ForRedirect}" /-->
<h4 class="fileToUpload">Select a File to Upload in AWS</h4><br />
<div class="row">
<input type="file" size="50" name="file" id="file" />
</div>
<div id="fileName"></div>
<div id="fileSize"></div>
<div id="fileType"></div>
<div class="row">
<input type="submit" value="Upload" id="btn_submit" />
</div>
<div id="progressNumber"></div>
</form>
</div>
<script>
$(document).ready(function () {
var _requestBucket;
$("#btn_submit").click(function(event){
//alert(1);
event.preventDefault();
var _file;
_file = $("#file").val().replace(/.+[\\\/]/, "");
console.log('_file '+ _file);
$("#key").val(_file);
$("#uploadForm").submit();
});
});
</script>
基元类型上调用它。如果您使用Comparator<MyObject> comparator = new Comparator<MyObject>(){
@Override
public int compare(final MyObject o1, final MyObject o2){
if(!o1.getCity().equals(o2.getCity())){
return o1.getCity().compareTo(o2.getCity());
}else{
return o1.getAge().compareTo(o2.getAge());
}
}
};
Collections.sort(myArrayList,comparator);
作为年龄,您可以写出if语句进行比较。