Java中从数组到数组列表的转换
我创建了类Java中从数组到数组列表的转换,java,arrays,arraylist,void,Java,Arrays,Arraylist,Void,我创建了类课程,其中包含数组学生。此数组包含字符串形式的学生姓名 我的新目标是将数组转换为ArrayList。我真的不知道该怎么办。我已经阅读了ArrayList,我相信它可以调整大小,我认为在这种情况下会很好,因为我的dropsudent和addStudent方法可能会不断改变学生数量,而不是将数组大小设置为100,但只有20个学生 我非常感谢您对如何准确地更改为ArrayList而不是Array的解释和建议 请注意,如果我有任何错误或不清楚的地方,我表示歉意。这是我关于StackOverfl
课程
,其中包含数组学生
。此数组包含字符串形式的学生姓名
我的新目标是将数组转换为ArrayList。我真的不知道该怎么办。我已经阅读了ArrayList,我相信它可以调整大小,我认为在这种情况下会很好,因为我的dropsudent
和addStudent
方法可能会不断改变学生数量,而不是将数组大小设置为100,但只有20个学生
我非常感谢您对如何准确地更改为ArrayList而不是Array的解释和建议
请注意,如果我有任何错误或不清楚的地方,我表示歉意。这是我关于StackOverflow的第一个问题,我知道你们在提问时非常严格,所以我提前道歉*
class Course {
private String courseName;
private String[] students = new String[100];
private int numberOfStudents;
public Course(String courseName) {
this.courseName = courseName;
}
public void addStudent(String student) {
int add = numberOfStudents - students.length; //Create integer to find how many slots we need
if (numberOfStudents > students.length) { //if # of students is bigger then size of array,
String[] array = new String[students.length + add]; //then we add slots to the array.
System.arraycopy(students, 0, array, 0, students.length); //copy array
students = array;
}
students[numberOfStudents++] = student; //add student.
}
public String[] getStudents() {
return students;
}
public int getNumberOfStudents() {
return numberOfStudents;
}
public String getCourseName() {
return courseName;
}
public void dropStudent(String student) {
for (int i = 0; i < students.length; i++) {
if (student == (students[i])) { //If student matches the student we want to remove.
numberOfStudents--; //remove student
while (i < numberOfStudents) {
students[i] = students[i+1];
i++;
}
}
}
}
public void clear() {
students = new String[1]; //set size to 1
numberOfStudents--; //remove all students
}
}
课程{
私有字符串courseName;
私有字符串[]学生=新字符串[100];
私人学生;
公共课程(字符串课程名称){
this.courseName=courseName;
}
公共学生(字符串学生){
int add=numberOfStudents-students.length;//创建整数以查找需要多少插槽
如果(numberOfStudents>students.length){//if#的学生数大于数组的大小,
String[]数组=新字符串[students.length+add];//然后我们将插槽添加到数组中。
System.arraycopy(students,0,array,0,students.length);//复制数组
学生=数组;
}
学生[numberOfStudents++]=student;//添加学生。
}
公共字符串[]getStudents(){
留学生;
}
公共int getNumberOfStudents(){
返回学生人数;
}
公共字符串getCourseName(){
返回courseName;
}
公共学生(字符串学生){
for(int i=0;i
列表
处理内部大小调整,这意味着您可以使用它而不是数组来删除大部分样板文件
class Course {
private String courseName;
private List<String> students = new ArrayList<>();
public Course(String courseName) {
this.courseName = courseName;
}
public void addStudent(String student) {
students.add(student);
}
public List<String> getStudents() {
return students;
}
public int getNumberOfStudents() {
return students.size();
}
public String getCourseName() {
return courseName;
}
public void dropStudent(String student) {
while (students.remove(student));
}
public void clear() {
students.clear();
}
}
课程{
私有字符串courseName;
private List students=new ArrayList();
公共课程(字符串课程名称){
this.courseName=courseName;
}
公共学生(字符串学生){
学生。添加(学生);
}
公众学生名单{
留学生;
}
公共int getNumberOfStudents(){
返回学生。大小();
}
公共字符串getCourseName(){
返回courseName;
}
公共学生(字符串学生){
while(student.remove(student));
}
公共空间清除(){
学生们,清除();
}
}
ArrayList非常有用,但如果需要更多选项,您可以创建一个类似list的类,并根据需要实现所有方法
学生示例:
public class studentList{
int size;
Student [] list;
public studentList()
{
size = 0;
list = new Student[size];
}
public studentList(int size)
{
this.size = size;
list = new Student[size];
}
public void add(Student s)
{
}
public void remove(Student s)
{
}
public void sort()
{
}
}
你可以随心所欲地实施。你的理解相当不错。我认为,如果你遇到了一些你无法解决的困难,你应该试着回来。如果我理解你的话,这很简单。只需更改
私有字符串[]学生=新字符串[100]
到这个列表students=new ArrayList()
然后您的addStudent
方法将在内部调用listadd
方法,dropStudent
将在内部调用listremove
方法。也不要像这样比较字符串student==(students[i])
而是使用equals
方法。