[英]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
然后傳遞給HashSet
的add
方法。
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.