Java从另一个类的数组列表中调用详细信息

时间:2016-04-05 23:33:44

标签: java arrays serialization arraylist

我有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);
    }
} 

1 个答案:

答案 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;