Java 如何根据用户的选择选择ArrayList元素
我有一个包含电影的ArrayListJava 如何根据用户的选择选择ArrayList元素,java,arraylist,choice,Java,Arraylist,Choice,我有一个包含电影的ArrayList ArrayList<Movie>movies = new ArrayList<Movie>(); ArrayListmovies=newArrayList(); 电影有一个属性int-movienumber 用户可以通过在控制台中输入所需数字,根据movienumber选择电影。 我将用户选择存储在字段moviechoice中 如何根据用户输入将用户选择的电影存储在字段moviemoviechosen? 也就是说,我如何检查用户输
ArrayList<Movie>movies = new ArrayList<Movie>();
ArrayListmovies=newArrayList();
电影有一个属性int-movienumber
用户可以通过在控制台中输入所需数字,根据movienumber选择电影。
我将用户选择存储在字段moviechoice
中
如何根据用户输入将用户选择的电影存储在字段moviemoviechosen
?
也就是说,我如何检查用户输入的内容是否与某部电影的number属性匹配,然后将该电影对象存储在moviechoice
字段中
如何根据用户的输入将用户选择的电影存储在“movie moviechosen”字段中?也就是说,如何检查用户输入的内容是否与某部电影的number属性匹配,然后将该电影对象存储在moviechoice字段中
像这样的事情应该可以
Movie moviechosen = null;
for (Movie m : movies)
if (m.movienumber == moviechoice)
moviechosen = m;
if (moviechosen == null)
System.out.println("Invalid choice!");
您可能还想考虑将电影存储在<代码>地图中。在这种情况下,你可以简单地做
Movie moviechoen = movies.get(moviechoice);
但是,请注意,每个movienumber只能有一个movie对象
如何根据用户的输入将用户选择的电影存储在“movie moviechosen”字段中?也就是说,如何检查用户输入的内容是否与某部电影的number属性匹配,然后将该电影对象存储在moviechoice字段中
像这样的事情应该可以
Movie moviechosen = null;
for (Movie m : movies)
if (m.movienumber == moviechoice)
moviechosen = m;
if (moviechosen == null)
System.out.println("Invalid choice!");
您可能还想考虑将电影存储在<代码>地图中。在这种情况下,你可以简单地做
Movie moviechoen = movies.get(moviechoice);
但是,请注意,每个movienumber只能有一个movie对象。对我来说,这听起来像是您实际上需要一个映射
,而不是列表
Map<Integer, Movie> movies = new HashMap<Integer, Movie>();
// for each movie
movies.put(movie.getNumber(), movie);
...
// retrieving the selected movie
Movie selectedMovie = movies.get(movieNumber);
if (selectedMovie == null)
System.out.println("Invalid movie number!");
Map movies=newhashmap();
//每部电影
movies.put(movie.getNumber(),movie);
...
//正在检索所选电影
Movie selectedMovie=movies.get(movieNumber);
如果(selectedMovie==null)
System.out.println(“无效电影编号!”);
(我假设电影编号是唯一的——我认为这不是一个很强的假设,因为如果没有这个,列表查找也会模棱两可。)
除了使用Map
更直观、更清晰、所需代码更少之外,它还提供了几乎恒定的时间查找,而List
具有O(n)。如果你有大量的电影,这将带来不同。对我来说,这听起来像你实际上需要一张地图而不是列表
Map<Integer, Movie> movies = new HashMap<Integer, Movie>();
// for each movie
movies.put(movie.getNumber(), movie);
...
// retrieving the selected movie
Movie selectedMovie = movies.get(movieNumber);
if (selectedMovie == null)
System.out.println("Invalid movie number!");
Map movies=newhashmap();
//每部电影
movies.put(movie.getNumber(),movie);
...
//正在检索所选电影
Movie selectedMovie=movies.get(movieNumber);
如果(selectedMovie==null)
System.out.println(“无效电影编号!”);
(我假设电影编号是唯一的——我认为这不是一个很强的假设,因为如果没有这个,列表查找也会模棱两可。)
除了使用Map
更直观、更清晰、所需代码更少之外,它还提供了几乎恒定的时间查找,而List
具有O(n)。如果你有大量的电影,这将带来不同。类似于:
for(Movie movie : movies)
{
if(movie.getMoveiNumber() == moviechoice)
{
moviechosen = movie;
}
}
movieChoice和movieChosen是更好的Java名称(它们遵循标准命名约定)类似于:
for(Movie movie : movies)
{
if(movie.getMoveiNumber() == moviechoice)
{
moviechosen = movie;
}
}
movieChoice和movieChosen是更好的Java名称(它们遵循标准的命名约定)在这种情况下,您没有选择,只能通过ArrayList循环并比较值:
for(Movie m : movies){
if( m.getTheNumberYouAreTalkingAbout() == numberSelected ){
moviechoice = m;
break;
}
}
如果号码是唯一的,您可能希望以前将所有电影保存在HashMap
:
Map<Integer, Movie>movies = new HashMap<Integer, Movie>();
在本例中,您别无选择,只能通过ArrayList循环并比较值:
for(Movie m : movies){
if( m.getTheNumberYouAreTalkingAbout() == numberSelected ){
moviechoice = m;
break;
}
}
如果号码是唯一的,您可能希望以前将所有电影保存在HashMap
:
Map<Integer, Movie>movies = new HashMap<Integer, Movie>();
假设是电影租赁服务。在这种情况下,他可能会有一对多的关系,从电影编号到电影。@aioobe,我怀疑电影租赁,在那里你或多或少会得到一部不同于你想要的电影,是否能长久存在:-)呵呵,我只是说,如果一个电影对象代表一个物理光盘,而movienumber是光盘上特定电影的引用,那就没有意义了:-)@aioobe,我的观点是,如果电影编号不是唯一的,如何从ArrayList
找到比从Map
更好的电影?假设这是一个电影租赁服务。在这种情况下,他可能会有一对多的关系,从电影编号到电影。@aioobe,我怀疑电影租赁,在那里你或多或少会得到一部不同于你想要的电影,是否能长久存在:-)呵呵,我只是说,如果一个电影对象代表一个物理光盘,而movienumber是光盘上特定电影的引用,那就没有意义了:-)@aioobe,我的观点是,如果电影编号不是唯一的,如何从ArrayList
中找到比从Map
中更好的电影?只是一个旁注:为接口而编程,而不是实现-因此Mapmovies=…
会更好。只是旁注:为接口而编程,而不是实现-因此Mapmovies=…
会更好。