比较java中数组的元素
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比较java中数组的元素相关的知识,希望对你有一定的参考价值。
我有两个数组。在一个,我有存储对象。在第二个,只有价值观。我需要将存储对象的属性与第二个数组的元素进行比较。在我下面发布的代码中,我需要将对象的第5个值与第二个数组的元素进行比较。如果值更大,则提出一种方法。有什么建议?
ParkedCar a1 = new ParkedCar ("Toyota", "Camry", "Blue", 672, 85);
ParkedCar a2 = new ParkedCar ("Mitsubishi", "Pajero", "White", 988, 40);
ParkedCar a3 = new ParkedCar ("Ferrari", "GTC4", "Yellow", 1, 220);
ParkedCar a4 = new ParkedCar ("Perodua", "Myvi", "White", 3714, 260);
ParkedCar a5 = new ParkedCar ("Toyota", "Prius", "Black", 1472, 367);
ParkedCar parkingLot[] = {a1, a2, a3, a4, a5};
ParkingMeter aa = new ParkingMeter ();
aa.setMinutesPurchased(120);
ParkingMeter bb = new ParkingMeter ();
bb.setMinutesPurchased(60);
ParkingMeter cc = new ParkingMeter ();
cc.setMinutesPurchased(120);
ParkingMeter dd = new ParkingMeter ();
dd.setMinutesPurchased(150);
ParkingMeter ee = new ParkingMeter ();
ee.setMinutesPurchased(60);
ParkingMeter meters[] = {aa, bb, cc, dd, ee};
所以如果ParkedCar的第5个值高于购买的分钟数,你想要//Do Something
。
您可以编写一个函数来执行此操作。包括检查两个阵列是否大小相同。你的功能很简单
for(int i = 0, i < parkingLot.getLength(), i++) {
if(parkingLot[i].getFifthValue() > meters[i].getMinutesPurchased()))
//DoSomething
}
但是,ParkedMeter是一个非常简单的类。为什么不将它作为属性添加到ParkedCar。在这种情况下,此仪表值检查只是您的ParkedCar类return fifthValue > minutesPurchased;
中的oneliner布尔函数
如果我理解,你假设parkingLot
和meters
具有相同的长度,并且meters[i].minutesPurchased
包含引用parkingLot[i]
的值。
我假设你在ParkedCar
和ParkingMeter
课程中有一些getter方法可以得到你需要的东西。
如果是这样,唯一可行的解决方案是某种for循环:
for (int i = 0; i < parkingLot.length; ++i)
if (parkingLot[i].fifthField > meters[i].minutesPurchased)
callSomeMethod();
就个人而言,我认为将两个类之间的链接保持在两个不同的数组中是一个坏主意。可能你可以添加一些方法ParkedCar.getParkingMeter()
来获得正确的答案,而无需for循环。
你的问题有点模糊,所以我不确定这是不是你的意思;但这是我的看法。
ParkedCar只是一个对象吗?因此,在创建{a1,a2 ... a5}时传递给它的每个值都只是ParkedCar的属性 - 就像ParkingMeter一样。利用每个对象的这些属性,您可以制作“getters”来比较这两个对象。
EG
在你的ParkedCar类中:
public class ParkedCar{
private double attributeFive;
ParkedCar(){}
ParkedCar(String Make, String Model, String Color, double valueFour, double valueFive){
//logic for setting values
attributeFive = valueFive;
}
public double getValueFive(){
return attributeFive;
}
}
现在这个代码中缺少一些东西,比如setter,但这应该会给你一张照片。你可以在ParkingMeter课程中做同样的事情。
您现在需要做的就是比较两个值(比如您创建对象的方法)。
if(a1.getValueFive < aa.getMinutesPurchesed){
//do something
}
看起来你已经拥有了大部分逻辑,但只是缺少一个简单的比较。您可以尝试观看一些YouTube教程,以了解Java的基本原则 - 我知道这是帮助我开始的原因。
实际上要在第二个数组中加入元素的参数,你必须使用getter来获取它们的值并与第一个数组的第五个元素值进行比较。在你的ParkingMeter
中放置一个这样的getter方法:
public double getMinutesPurchased(){
return this.MinutesPurchased;
}
以上是关于比较java中数组的元素的主要内容,如果未能解决你的问题,请参考以下文章
在c#中找出一个数组中出现次数最多的元素,求各种方法,要详细的代码