Java 从一个特定元素中查找所有值
我有一个动物列表和一些关于它们的信息,如果我希望用户能够通过键入动物的名称来查找动物及其信息,我该怎么办?我已将动物储存在如下列表中:Java 从一个特定元素中查找所有值,java,Java,我有一个动物列表和一些关于它们的信息,如果我希望用户能够通过键入动物的名称来查找动物及其信息,我该怎么办?我已将动物储存在如下列表中: List<Animal> an = new ArrayList<Animal>(); Animal a4 = new Animal(); a4.add("Tiffany", 10, "Giraffe", "Grass"); a4.add("Mayo", 30,
List<Animal> an = new ArrayList<Animal>();
Animal a4 = new Animal();
a4.add("Tiffany", 10, "Giraffe", "Grass");
a4.add("Mayo", 30, "Elephant", "Water");
a4.add("Simba", 30, "Turtle", "Leaves");
public class Animal {
String name;
int age;
String breed;
String eats;
// getters, setters, constructor with fields
}
List an=new ArrayList();
动物a4=新动物();
a4.添加(“Tiffany”,10,“长颈鹿”,“草”);
添加(“梅奥”、30、“大象”、“水”);
添加(“辛巴”,30,“海龟”,“树叶”);
我假设你有一个动物类
如下:
List<Animal> an = new ArrayList<Animal>();
Animal a4 = new Animal();
a4.add("Tiffany", 10, "Giraffe", "Grass");
a4.add("Mayo", 30, "Elephant", "Water");
a4.add("Simba", 30, "Turtle", "Leaves");
public class Animal {
String name;
int age;
String breed;
String eats;
// getters, setters, constructor with fields
}
使用Java 8:
List<Animal> an = new ArrayList<Animal>();
an.add(new Animal("Tiffany", 10, "Giraffe", "Grass"));
an.add(new Animal("Mayo", 30, "Elephant", "Water"));
an.add(new Animal("Simba", 30, "Turtle", "Leaves"));
// String name = "Mayo"; // commented to get the user input with Scanner
Scanner scan = new Scanner(System.in);
System.out.println("Enter the animal's name, please...");
String name = scan.nextLine();
Optional<Animal> foundAnimal = an.stream().filter(animal -> animal.getName().equals(name)).findFirst();
if (foundAnimal.isPresent()) { // if the animal is in the list
System.out.println("Animals name: " + foundAnimal.get().getName() + "\n" + "Animals age: "
+ foundAnimal.get().getAge());
}
输出:
Animals name: Mayo
Animals age: 30
我假设你有一个
动物类,如下所示:
List<Animal> an = new ArrayList<Animal>();
Animal a4 = new Animal();
a4.add("Tiffany", 10, "Giraffe", "Grass");
a4.add("Mayo", 30, "Elephant", "Water");
a4.add("Simba", 30, "Turtle", "Leaves");
public class Animal {
String name;
int age;
String breed;
String eats;
// getters, setters, constructor with fields
}
使用Java 8:
List<Animal> an = new ArrayList<Animal>();
an.add(new Animal("Tiffany", 10, "Giraffe", "Grass"));
an.add(new Animal("Mayo", 30, "Elephant", "Water"));
an.add(new Animal("Simba", 30, "Turtle", "Leaves"));
// String name = "Mayo"; // commented to get the user input with Scanner
Scanner scan = new Scanner(System.in);
System.out.println("Enter the animal's name, please...");
String name = scan.nextLine();
Optional<Animal> foundAnimal = an.stream().filter(animal -> animal.getName().equals(name)).findFirst();
if (foundAnimal.isPresent()) { // if the animal is in the list
System.out.println("Animals name: " + foundAnimal.get().getName() + "\n" + "Animals age: "
+ foundAnimal.get().getAge());
}
输出:
Animals name: Mayo
Animals age: 30
使用地图
Map<String,Animal> animalsMap=new HashMap<String,Animal>();
animalsMap.put("Tiffany",new Animal("Tiffany", 10, "Giraffe", "Grass"));
animalsMap.put("Tiffany",new Animal("Mayo", 30, "Elephant", "Water"));
animalsMap.put("Simba",new Animal("Simba", 30, "Turtle", "Leaves"));
使用地图
Map<String,Animal> animalsMap=new HashMap<String,Animal>();
animalsMap.put("Tiffany",new Animal("Tiffany", 10, "Giraffe", "Grass"));
animalsMap.put("Tiffany",new Animal("Mayo", 30, "Elephant", "Water"));
animalsMap.put("Simba",new Animal("Simba", 30, "Turtle", "Leaves"));
你的逻辑有问题。您已经创建了一个ArrayList,它将存储动物类对象,因此,您需要使用.add(new Animal(parameters/details))并在稍后对其进行迭代。请使用以下代码作为参考-
import java.util.ArrayList;
import java.util.List;
public class Animal {
private String name;
private int num;
private String type;
private String food;
public Animal(String name, int num, String type, String food) {
super();
this.name = name;
this.num = num;
this.type = type;
this.liveon = food;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "Animal [name=" + name + ", num=" + num + ", type=" + type + ",
food=" + food + "]";
}
public static void main(String [] args) {
List<Animal> an = new ArrayList<Animal>();
// Add Address objects to the ArrayList
an.add(new Animal("Tiffany", 10, "Giraffe", "Grass"));
an.add(new Animal("Mayo", 30, "Elephant", "Water"));
an.add(new Animal("Simba", 30, "Turtle", "Leaves"));
// Iterate over the ArrayList
for(Animal a:an){
if(a.getName() == "Simba"){
System.out.println(a.toString());
}
}
}
}
import java.util.ArrayList;
导入java.util.List;
公营动物{
私有字符串名称;
私有整数;
私有字符串类型;
私人串食;
公共动物(字符串名称、整数、字符串类型、字符串食物){
超级();
this.name=名称;
this.num=num;
this.type=type;
liveon=食物;
}
公共字符串getName(){
返回名称;
}
@凌驾
公共字符串toString(){
返回“Animal[name=“+name+”,num=“+num+”,type=“+type+”,
食品=“+食品+”];
}
公共静态void main(字符串[]args){
List an=new ArrayList();
//将地址对象添加到ArrayList
增加(新动物(“蒂芙尼”,10,“长颈鹿”,“草”);
增加(新动物(“梅奥”,30,“大象”,“水”);
加入(新动物(“辛巴”,30,“海龟”,“树叶”);
//在ArrayList上迭代
用于(动物a:an){
如果(a.getName()=“Simba”){
System.out.println(a.toString());
}
}
}
}
您的逻辑有问题。您已经创建了一个ArrayList,它将存储动物类对象,因此,您需要使用.add(new Animal(parameters/details))并在稍后对其进行迭代。请使用以下代码作为参考-
import java.util.ArrayList;
import java.util.List;
public class Animal {
private String name;
private int num;
private String type;
private String food;
public Animal(String name, int num, String type, String food) {
super();
this.name = name;
this.num = num;
this.type = type;
this.liveon = food;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "Animal [name=" + name + ", num=" + num + ", type=" + type + ",
food=" + food + "]";
}
public static void main(String [] args) {
List<Animal> an = new ArrayList<Animal>();
// Add Address objects to the ArrayList
an.add(new Animal("Tiffany", 10, "Giraffe", "Grass"));
an.add(new Animal("Mayo", 30, "Elephant", "Water"));
an.add(new Animal("Simba", 30, "Turtle", "Leaves"));
// Iterate over the ArrayList
for(Animal a:an){
if(a.getName() == "Simba"){
System.out.println(a.toString());
}
}
}
}
import java.util.ArrayList;
导入java.util.List;
公营动物{
私有字符串名称;
私有整数;
私有字符串类型;
私人串食;
公共动物(字符串名称、整数、字符串类型、字符串食物){
超级();
this.name=名称;
this.num=num;
this.type=type;
liveon=食物;
}
公共字符串getName(){
返回名称;
}
@凌驾
公共字符串toString(){
返回“Animal[name=“+name+”,num=“+num+”,type=“+type+”,
食品=“+食品+”];
}
公共静态void main(字符串[]args){
List an=new ArrayList();
//将地址对象添加到ArrayList
增加(新动物(“蒂芙尼”,10,“长颈鹿”,“草”);
增加(新动物(“梅奥”,30,“大象”,“水”);
加入(新动物(“辛巴”,30,“海龟”,“树叶”);
//在ArrayList上迭代
用于(动物a:an){
如果(a.getName()=“Simba”){
System.out.println(a.toString());
}
}
}
}
请提供更多的上下文,并显示您迄今为止编写的所有代码。对于这种情况,如果您希望用户能够通过动物的名称获取动物,您可能需要使用一个而不是列表一个.stream().findFirst(a->a.name.equals(inputData)).get()代码>@GreenCoveGuy起初,我实际上使用了一个地图(虽然不太熟悉),但我只能得到要打印的名称和第二个值。如果您有一个键和多个键,则不确定它是如何工作的values@Barrenr然后,对值的类型要更具创造性。要么让键为字符串
,值为动物
,要么如果需要多个同名的动物
对象,然后让值始终为List
,包含所有具有该名称的Animal
对象。请提供更多上下文并显示您迄今为止编写的任何代码。对于类似的情况,您希望用户能够通过名称获取动物,您可能希望使用一个而不是列表一个.stream().findFirst(a->a.name.equals(inputData)).get()代码>@GreenCoveGuy起初,我实际上使用了一个地图(虽然不太熟悉),但我只能得到要打印的名称和第二个值。如果您有一个键和多个键,则不确定它是如何工作的values@Barrenr然后,对值的类型要更具创造性。要么让键为字符串
,值为动物
,要么如果需要多个同名的动物
对象,那么让值始终为列表
,包含所有同名的动物
对象。如果用户选择了动物,您将如何执行for each循环?简单地用用户输入替换“辛巴”是行不通的。你到底想搜索什么?如果用户选择了动物,你会如何执行for each循环?简单地用用户输入替换“simba”是行不通的。您到底想搜索什么?如何使用用户输入而不是字符串name=“mayo”?因此,如果用户类型为“Mayo”,则Mayo的信息将显示编辑由您决定,我将使用扫描仪获取用户输入。@Baller我进行了快速更新以获取用户输入……您如何获取用户输入而不是string name=“Mayo”?因此,如果用户类型为“Mayo”,则Mayo的信息将显示编辑由您决定,我将使用扫描仪获取用户输入。@Baller我进行了快速更新以获取用户输入。。。