如何在另一个java类中调用数组列表
我需要编写一个代码来检查数组列表中的所有单词,并告诉我其中有多少具有特定长度。我知道如何做到这一点,但我不知道如何使如何在另一个java类中调用数组列表,java,arrays,arraylist,return,Java,Arrays,Arraylist,Return,我需要编写一个代码来检查数组列表中的所有单词,并告诉我其中有多少具有特定长度。我知道如何做到这一点,但我不知道如何使ArrayList在第二个类中读取,以便在程序中应用它 MAIN import java.util.Scanner; class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); java.util.ArrayList myList = new
ArrayList
在第二个类中读取,以便在程序中应用它
MAIN
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
java.util.ArrayList myList = new java.util.ArrayList();
myList.add("cat");
myList.add("mouse");
myList.add("frog");
myList.add("dog");
myList.add("dog");
int len = in.nextInt();
WordList wl = new WordList();
wl.numWordsOfLength(len);
}
}
二等舱
public class WordList{
public int numWordsOfLength(int len){
int count = 0;
for(int i=0;i<len;i++){
if(((String)myList.get(i)).length()==len){
count++;
}
}
return count;
}
}
公共类单词列表{
公共整数长度(整数长度){
整数计数=0;
对于(int i=0;i您需要将列表作为参数传递:
public int numWordsOfLength(int len, List<String> myList){
int count = 0;
for(int i=0;i<myList.size;i++){
if((myList.get(i)).length()==len){
count++;
}
}
return count;
}
侧节点,而不是:
java.util.ArrayList myList = new java.util.ArrayList();
只要做:
import java.util.List;
....
List<String> myList = new ArrayList();
import java.util.List;
....
List myList=new ArrayList();
完整运行示例:
public class Test {
public static class WordList{
private final List<String> myList;
WordList(List<String> myList){
this.myList = myList;
}
public int numWordsOfLength(int len){
int count = 0;
for (String s : myList) {
if (s.length() == len) {
count++;
}
}
return count;
}
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
List<String> myList = new ArrayList<>();
myList.add("cat");
myList.add("mouse");
myList.add("frog");
myList.add("dog");
myList.add("dog");
int len = in.nextInt();
WordList wl = new WordList(myList);
System.out.println(wl.numWordsOfLength(len));
}
}
公共类测试{
公共静态类词表{
私人最终名单;
单词列表(列表myList){
this.myList=myList;
}
公共整数长度(整数长度){
整数计数=0;
for(字符串s:myList){
如果(s.length()==len){
计数++;
}
}
返回计数;
}
}
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
List myList=new ArrayList();
myList.添加(“cat”);
myList.add(“鼠标”);
myList.添加(“青蛙”);
我的列表。添加(“狗”);
我的列表。添加(“狗”);
int len=in.nextInt();
单词列表wl=新单词列表(myList);
系统输出打印长度(wl.numWordsOfLength(len));
}
}
这取决于你对“第二课堂阅读”的理解
我的猜测是,您希望第二个类将“myList”作为私有变量,这样,当您调用numWordsOfLength()函数时,代码就可以工作了
为此,您应该将构建的数组作为依赖项传递给WordList。通常有两种方法为对象提供依赖项。创建对象时(基于构造函数)或稍后通过调用方法(setters)
因此,总体而言,您的目标是:
WordList wl = new WordList();
wl.setList(myList)
wl.numWordsOfLength(len);
或:
无论哪种方式,您都必须在WordList中添加“myList”变量,然后通过单独的setter方法(setList)或构造函数本身公开它
在这种情况下,我更喜欢构造函数,因为类“WordList”的名称意味着它是一个事物列表,因此应该封装它本身
i、 e
公共类单词列表{
私人名单;
公共单词列表(单词列表){
this.myList=listOfWords;
}
公共整数numWordsOfLength。。。。
}
如果使用Java 8+,则根本不需要第二个类:
...
java.util.ArrayList<String> myList = new java.util.ArrayList();
myList.add("cat");
myList.add("mouse");
myList.add("frog");
myList.add("dog");
myList.add("dog");
int len = in.nextInt();
int count = myList.stream().map(String::length).filter(c->c==len).count(); <--that's your answer
...
WordList wl = new WordList(myList);
wl.numWordsOfLength(len);
public class WordList{
private List<String> myList;
public WordList(List<String> listOfWords) {
this.myList = listOfWords;
}
public int numWordsOfLength....
}
...
java.util.ArrayList<String> myList = new java.util.ArrayList();
myList.add("cat");
myList.add("mouse");
myList.add("frog");
myList.add("dog");
myList.add("dog");
int len = in.nextInt();
int count = myList.stream().map(String::length).filter(c->c==len).count(); <--that's your answer
...
public int numWordsOfLength(int len, List<String> list){
int count = 0;
for(int i=0;i<list.size();i++){
if(list.get(i).length()==len){
count++;
}
}
return count;
}