Java 选择每列上有多个条件的行
我有一个类似以下的问题需要在java中实现Java 选择每列上有多个条件的行,java,algorithm,Java,Algorithm,我有一个类似以下的问题需要在java中实现 item view Hit Quality(%) 1 20 6 55 2 18 8 67 3 16 7 70 4 13 9 80 5 17 8 85 .. .. .. .. 我这里有上述格式的数据 我必须只选择那些视图、命中率和质量平均值之和最高的行 这是上面的
item view Hit Quality(%)
1 20 6 55
2 18 8 67
3 16 7 70
4 13 9 80
5 17 8 85
.. .. .. ..
我这里有上述格式的数据
我必须只选择那些视图、命中率和质量平均值之和最高的行
这是上面的第一个问题,第二个问题是额外的,比如我们提到的总视图、总命中率和总质量平均值的最小限制,比如视图=100、命中率=30和质量=70%。这里的首要因素是观点,次要因素是命中率,第三个因素是质量。所以现在我们必须再次为这些最高值选择行,但要小心,视图和命中的总和不应小于限制。如果没有达到极限的案例,那么我们可以继续进行,而不必关心它。使用以下代码对结果进行排序:
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Item {
private int view;
private int hit;
private double quality;
public int getView() {
return view;
}
public void setView(int view) {
this.view = view;
}
public int getHit() {
return hit;
}
public void setHit(int hit) {
this.hit = hit;
}
public double getQuality() {
return quality;
}
public void setQuality(double quality) {
this.quality = quality;
}
}
class ExecuteTest{
public void sort(List<Item> itemList){
Collections.sort(itemList, new Comparator<Item>() {
@Override
public int compare(Item item1, Item item2) {
boolean checkView = true, checkHit = true;
if(item1.getView() == item2.getView()){
checkView = false;
}
if(item1.getHit() == item2.getHit()){
checkHit = false;
}
if(item1.getView() <=100 && item1.getHit() <= 30 && item1.getQuality() <= 70
&&
item2.getView() <=100 && item2.getHit() <= 30 && item2.getQuality() <= 70
){
if(checkView && item1.getView() > item2.getView()){
return 1;
}else if(checkView && item1.getView() < item2.getView()){
return -1;
}
else if(checkHit && item1.getHit() > item2.getHit()){
return 1;
}else if(checkHit && item1.getHit() < item2.getHit()){
return -1;
} else if(item1.getQuality() > item2.getQuality()){
return 1;
} else if(item1.getQuality() < item2.getQuality()){
return -1 ;
} else{
return 0;
}
}
return 0;
}
});
}
}
import java.util.Collections;
导入java.util.Comparator;
导入java.util.List;
公共类项目{
私有视图;
私人int hit;
私人双重品质;
public int getView(){
返回视图;
}
公共void集合视图(int视图){
this.view=视图;
}
公共int getHit(){
回击;
}
公共无效集命中(整数命中){
hit=hit;
}
公共服务质量(){
退货质量;
}
公共质量(双重质量){
质量=质量;
}
}
类执行测试{
公共无效排序(列表项列表){
Collections.sort(itemList,newcomparator(){
@凌驾
公共整数比较(项目1、项目2){
布尔值checkView=true,checkHit=true;
如果(item1.getView()==item2.getView()){
checkView=false;
}
如果(item1.getHit()==item2.getHit()){
checkHit=false;
}
if(item1.getView()