我想知道在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.
}
答案 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));
}