如何在ArrayList中将第一个元素打印到HashSet中

时间:2015-09-18 15:01:23

标签: java arraylist hashset

我想知道在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

我想专门从firstNames中创建一个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.
}

2 个答案:

答案 0 :(得分:1)

  

我想专门从firstNames中创建一个HashSet

您可以遍历您的列表并使用firstname的getter,并传递给HashSet的{​​{1}}方法。

add

但请注意,后续的等号Set<String> animalFirstnameSet = new HashSet(); for(Animal animal : animalList) { animalFirstnameSet.add(animal.getFirstname()); } 将覆盖之前的等号firstnames。例如,如果你有

FirstName = Sam, lastName = blue, Tag = 5

在列表的末尾,它将覆盖

FirstName = Sam, lastName = brown, Tag = 5

因此您最终会HashSet大小listsize - 1

如果您想阻止这种情况,您可能希望覆盖班级hashcode()的{​​{1}}和equals(),并将这些实例添加到Animal

如果您希望按Set<Animal>进行映射并保留所有动物,即使它们具有相同的名称,那么您可能需要使用firstname代替值HashMap List个实例。

答案 1 :(得分:0)

使用自定义对象并覆盖其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));
        }
相关问题