有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在arrayList中获取特定列的不同值

假设我有这个arrayList:

ArrayList<Personne> personnes = new ArrayList<Personne>();
        Personne p1 = new Personne("001590842","51862499", "N5+", "1", "20170201","0");
        Personne p2 = new Personne("001590842","51862499", "X0", "1", "20150529", "1");
        Personne p3 = new Personne("001639055","51862517", "G3", "1", "20170201", "2");
        Personne p4 = new Personne("001639055","51862517", "G3", "1", "20170201", "2");
        Personne p5 = new Personne("001597135","51862517", "G3", "1", "20170201", "2");
        Personne p6 = new Personne("001597135","51862517", "G3", "1", "20170201", "2");
        Personne p7 = new Personne("002804935","00006178","G4","1","19870101","1");
        Personne p8 = new Personne("002804935","00009118","X0","1","19861201","1");
        Personne p9 = new Personne("002804935","00009957","N4+","1","19861229","1");
        Personne p10 = new Personne("002804935","00012970","B3++","1","20100227","1");
        personnes.add(p1);
        personnes.add(p2);
        personnes.add(p3);
        personnes.add(p4);
        personnes.add(p5);
        personnes.add(p6);
        personnes.add(p7);
        personnes.add(p8);
        personnes.add(p9);
        personnes.add(p10);

然后我只想得到第一列的不同值。因此nedeed结果应该是:

001590842
001639055
002804935

请注意,我的人员类别定义为:

public class Personne {

    private String IDT_GCT;
    private String IDC_PSE_PCL;
    private String IDC_CD_NOT;
    private String DA_PRM_CTR_ORDER;
    private String IDT_ETT_PSE;
    private String CD_NOT;

    public Personne(String IDT_GCT, String IDC_PSE_PCL, String IDC_CD_NOT,
                    String DA_PRM_CTR_ORDER, String IDT_ETT_PSE, String CD_NOT) {
        this.IDT_GCT =  IDT_GCT;
        this.IDC_PSE_PCL = IDC_PSE_PCL;
        this.IDC_CD_NOT = IDC_CD_NOT;
        this.DA_PRM_CTR_ORDER = DA_PRM_CTR_ORDER;
        this.IDT_ETT_PSE = IDT_ETT_PSE;
        this.CD_NOT = CD_NOT;
    }

    public String getIDC_CD_NOT() {
        return this.IDC_CD_NOT;
    }

    public String getIDC_PSE_PCL() {
        return this.IDC_PSE_PCL;
    }

    public String getDA_PRM_CTR_ORDER() {
        return this.DA_PRM_CTR_ORDER;
    }

    public String getIDT_ETT_PSE() {
        return this.IDT_ETT_PSE;
    }

    public String getCD_NOT() {
        return this.CD_NOT;
    }

    public String getIDT_GCT() {
        return this.IDT_GCT;
    }

}

所以我需要得到IDT_GCT变量的不同值

所以我创建了这个函数来返回:

private static List DistinctValues (ArrayList<Personne> listPersonnes)
{
    List <String> outList = listPersonnes.stream().map(m -> m.get("IDT_GCT")).distinct().collect(Collectors.toList());
    return(outList);

}

但这会返回一个错误:

Multiple markers at this line
    - Cannot infer type argument(s) for <R> map(Function<? super T,? extends     R>)
    - The method get(String) is undefined for the type Personne
    - The type List is not generic; it cannot be parameterized with arguments    <String>

我怎样才能解决它呢


共 (2) 个答案

  1. # 1 楼答案

    The method get(String) is undefined for the type Personne

    您应该改用getIDT_GCT()

  2. # 2 楼答案

    私有列表distinctValue(ArrayList listPersonnes){ Set uniqueColumnValues=新哈希集<&燃气轮机;(); // 哈希集包含唯一的值 listPersonnes。forEach(item->;uniqueColumnValues.add(item.getIDT_GCT());//向HashSet添加值 返回唯一的列值。流()。collect(Collectors.toList()); }