Java 如何将数组发送到arraylist?
我在创建数组或对象(具有多个字段)并将其发送到数组列表时遇到问题。任何帮助都将不胜感激。我花了好几个小时浏览YouTube上的每一段视频,视频中都有“对象”和“数组列表”这两个词,但找不到太多帮助 程序需要提示用户选择一个选项(1.AddItem),然后提示用户输入名称和格式(dvd、vhs),并在数组列表中保存具有这些变量的多个对象。我要么将保存在内存中的位置返回给我,要么创建一个大对象而不是多个对象 库:Java 如何将数组发送到arraylist?,java,arrays,arraylist,Java,Arrays,Arraylist,我在创建数组或对象(具有多个字段)并将其发送到数组列表时遇到问题。任何帮助都将不胜感激。我花了好几个小时浏览YouTube上的每一段视频,视频中都有“对象”和“数组列表”这两个词,但找不到太多帮助 程序需要提示用户选择一个选项(1.AddItem),然后提示用户输入名称和格式(dvd、vhs),并在数组列表中保存具有这些变量的多个对象。我要么将保存在内存中的位置返回给我,要么创建一个大对象而不是多个对象 库: import java.util.Scanner; import java.util.
import java.util.Scanner;
import java.util.ArrayList;
public class Library {
static ArrayList<Object> items = new ArrayList<Object>();
static int menuOption;
static Scanner scan = new Scanner(System.in);
public static void main(String args[]) {
String title, format;
boolean right = false;
do{
displayMenu();
if (menuOption == 1){
System.out.println("Enter Title: ");
title = scan.next();
System.out.println("Enter format: ");
format = scan.next();
addNewItem(title, format);
} else {System.out.println(items);
}
} while (!right);
}
static int displayMenu(){
System.out.println("Menu: ");
System.out.println("1. Add New Item");
menuOption = scan.nextInt();
return menuOption;
}
static void addNewItem(String title, String format){
MediaItem b = new MediaItem();
b.setTitle(title);
b.setFormat(format);
items.add(b);
}
}
public class MediaItem {
String title;
String format;
MediaItem(){
title = null;
format = null
}
MediaItem(String title, String format){
title = new String();
format = new String();
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getFormat() {
return format;
}
public void setFormat(String format) {
this.format = format;
}
}
我要么继续将保存在内存中的位置返回给我
我猜您是在尝试使用System.out.println()
打印MediaItem
或尝试自动将对象转换为字符串时遇到这种情况的。无论您在查看内存地址时采取什么方法,都可能是正确的方法,您的问题只在于数据的显示
考虑:
MediaItem item = ...;
System.out.println(item);
默认情况下,当您执行类似操作时,Java不知道如何将任意对象转换为字符串,因此它只会输出类名和内存地址。您需要单独打印字段(例如,Java已经知道如何显示字符串
),例如:
或者您可以重写toString()
(在对象中声明)以提供自定义字符串转换:
class MediaItem {
...
@Override public String toString () {
return "Title: " + title + " Format: " + format;
}
}
然后您可以直接打印:
System.out.println(item);
它是Object.toString()
的默认基本实现,用于生成包含内存地址的字符串
根据您的描述,我猜您的实现大致正常,但遇到了这个问题,并最终改变(打破)了一系列其他不相关的东西来尝试修复它。如果您:
1-换行
static ArrayList<Object> items = new ArrayList<Object>();
System.out.println( items );
到
3-在行尾插入“;”
format = null
我在这里做了,它成功了。您的代码中有哪一部分需要处理?请删除代码中不相关的部分。不清楚错误和需要什么。您的代码似乎与主题标题完全不匹配。是否要将数组转换为ArrayList?如果是,那么看看()你到底在找什么?非常感谢你的帮助!是的,我知道我很快就找到了答案,我想知道这是否与转换有关。@YellowSoloCup顺便说一句,如果您使用的是Eclipse,您可以右键单击代码,选择“源”,然后选择“Generate toString()”,Eclipse将生成一个合理的toString()
函数,其中包括所有成员字段的值。非常方便。
System.out.println( items );
for ( MediaItem mi : items )
{
System.out.println( mi.getTitle() + ", " + mi.getFormat() );
}
format = null