簡體   English   中英

如何將ArrayList中的第一個元素打印到Java中的HashSet

[英]How to print first element in ArrayList to HashSet in Java

我想知道最簡單的方法是打印出ArrayList每一行中的第一個元素。 就我而言,我想打印動物“僅名字”。

例:

FirstName = Sam, lastName = brown, Tag = 5
FirstName = lucky, lastName = brown, Tag = 4
FirstName = Rocky, lastName = brown, Tag = 3
FirstName = Spike, lastName = brown, Tag = 1

我只想專門根據名字HashSet 我的ArrayList是通過使用DataInputStream生成的

預期產量

FirstName = Sam,    
FirstName = lucky
FirstName = Rocky
FirstName = Spike

示例代碼:動物類

public class Animal implements Serializable
{
    public String firstName;
    public String lastName;
    public int tag Number;

     // 0 Argument Constructor 
     public Animal()
     {
         firstName = "";
         lastName = "";
         tagNumber = 0;
     }    

    // following that is a 3 argument constructor, then getters and a
    // toString. The toString and getters can't be edited.
}

我只想專門根據名字HashSet

您可以遍歷列表,並使用getter作為firstname然后傳遞給HashSetadd方法。

Set<String> animalFirstnameSet = new HashSet();
for(Animal animal : animalList) {
    animalFirstnameSet.add(animal.getFirstname());
}

但是請注意,后續相等的firstnames將覆蓋先前的firstnames 例如,如果你有

FirstName = Sam, lastName = blue, Tag = 5

在列表的末尾,它將覆蓋

FirstName = Sam, lastName = brown, Tag = 5

因此,您將得到一個HashSet ,大小為listsize - 1

如果要防止這種情況,則可能需要覆蓋Animal類的hashcode()equals()並將這些實例添加到Set<Animal>

如果firstname進行映射,並且即使所有動物都具有相同的名稱,也要保留它們,那么您可能需要使用HashMap並具有Animal實例List的值。

從自定義對象使用,並覆蓋其toString()方法以僅返回姓氏。 步驟如下:

1.創建一個自定義對象類並覆蓋其toString()方法

public class ComplexObject
{
    private String firstName;
    private int tag;
    private String lastName;




    public ComplexObject(String firstName, int tag, String lastName)
    {
        this.firstName = firstName;
        this.tag = tag;
        this.lastName = lastName;

    }

    //Be sure to override the toString() like this
    public String toString()
    {
        return  this.firstName;
    }
}

2.添加該對象的ArrayList,這是一個經過測試的程序

public class TestClass
{
    public static void main(String[] args)
    {
        ArrayList<ComplexObject> arr = new ArrayList<ComplexObject>();



        arr.add(new ComplexObject("Elham", 1, "Kohestani"));
        arr.add(new ComplexObject("Tom", 2, "Alexi"));
        arr.add(new ComplexObject("Max", 3, "Sharon"));



        for(int i =0; i<arr.size(); i++)
        {
            System.out.println(arr.get(i));
        }
    }
}

結果,它為您提供了名字Elham,Tom和Max。
您可以簡單地在for循環內創建一個HashSet的名字,如下所示:

HashSet<ComplexObject> x = new HashSet<>();

        for(int i =0; i<arr.size(); i++)
        {
            x.add(arr.get(i));
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM