我有2个示例类来尝试更好地理解数组列表。 PersonData包含一个数组列表。 PersonType将从数组列表中获取详细信息。我试图理解数组列表背后的逻辑。例如,如果要求用户输入personID,我该如何带回该人的信件和年龄。如何通过从列表中输入值来从数组列表中检索1个人的内容?
public class PersonData {
private final List<personList> personList;
public PersonData() { //constructor
personList= new ArrayList<>();
personList.add(new personList(1, 'x', 23));
personList.add(new personList(2, 'y', 28));
personList.add(new personList(3, 'z', 37));
}
import java.io.Serializable;
public class PersonType implements Serializable {
int personID;
String personLetter;
int personAge;
// constructor
public PersonType (int pID, String pLetter, int pAge) {
personID= pID;
personLetter = pLetter;
personAge= pAge;
}
public PersonType () {
this(0,"",0);
}
public int getPersonID() {
return (personID);
}
public String getPersonLetter() {
return (personLetter );
}
public int getPersonAge() {
return (personAge);
}
}
答案 0 :(得分:3)
最简单的方法是使用Map而不是List。
<button id="btnSave" type="submit" formaction="Save">Save</button>
$('#btnSave').click(function (e) {
var thisForm = $(this).closest( form ).serialize();
$.ajax({
url: '#',
type: 'GET',
cache: false
}).done(function(result) {
CallMySecond(thisForm );
});
});
function CallMySecond(data){
$.ajax({
type: 'POST',
url: 'mySecond.php',
data: thisForm.serialize()
});
}
现在,您可以在固定的时间内按ID获取特定的人。
public class PersonData {
private final Map<Integer,PersonType> map;
public PersonData() { //constructor
map = new HashMap<>();
map.put( 1, new PersonType(1, 'x', 23));
map.put( 2, new PersonType(2, 'y', 28));
map.put( 3, new PersonType(3, 'z', 37));
}
如果您确实希望将数据存储在列表中,那么查找特定匹配可能需要在列表中进行线性搜索。 (如果您知道它已经排序,您可以进行二进制搜索,以获得O(log n)成本。)
这是第一个匹配元素列表的线性搜索草图。 (我面前没有编译器。)鉴于:
PersonType person = map.get( 2 );
然后在列表中找到具有匹配ID的人:
private final List<personList> personList;