目录
1.Java中的集合
Java中的集合是一组用于存储和操作对象的数据结构。它们位于Java集合框架中,并提供了多种类型的集合类来满足不同的需求。
Java集合框架包括以下接口和类:
- Collection接口:是所有集合类的根接口,它定义了一些通用的方法,如添加、删除、检查、遍历等。
- List接口:继承自Collection接口,表示有序的集合,可以包含重复元素。常见的实现类有ArrayList、LinkedList、Vector等。
- Collection接口:是所有集合类的根接口,它定义了一些通用的方法,如添加、删除、检查、遍历等
- Set接口:继承自Collection接口,表示无序的集合,不可以包含重复元素。常见的实现类有HashSet、TreeSet等。
- Map接口:表示键值对的集合,其中键是唯一的。Map接口没有继承自Collection接口。常见的实现类有HashMap、TreeMap、LinkedHashMap等。
- Queue接口:继承自Collection接口,表示待处理的元素集合。常见的实现类有LinkedList、PriorityQueue等。
这些集合类提供了各种方法来添加、删除、查找、迭代等操作元素。它们还提供了不同的实现方式和性能特点,可以根据具体的需求选择适合的集合类。
使用集合类可以更方便地处理和操作数据,比如存储学生数据、管理订单、实现高效的搜索和排序等。集合类还提供了很多便利的方法和工具类,用于对集合进行操作和处理。
2.ArrayList类
ArrayList类是Java中的一个集合类,它实现了List接口,并提供了动态数组的功能。它的作用是用于存储和操作一组对象。
ArrayList类的特点包括:
-
动态大小:ArrayList的大小是可变的,可以根据需要动态增加或减少。这意味着可以根据实际需求灵活地调整集合的大小。
-
有序集合:ArrayList中的元素是有序的,添加元素的顺序与元素在集合中的位置一致。可以根据索引来访问和操作集合中的元素。
-
可重复元素:ArrayList允许在集合中包含重复的元素。可以使用add()方法添加重复元素,同时获取元素时也可以获取到重复的元素。
ArrayList类提供了一系列方法,用于添加、删除、修改和获取集合中的元素。例如:
- add()方法:用于向ArrayList中添加元素。
-
public class Demo { public static void main(String[] args) { ArrayList<Object> fruit = new ArrayList<>(); fruit.add("apple"); fruit.add("banana"); fruit.add("orange"); fruit.add("pear"); System.out.println(fruit);//[apple, banana, orange, pear] } }
- remove()方法:用于删除ArrayList中的元素。
-
fruit.remove(0); System.out.println(fruit);//[banana, orange, pear]
集合中的元素是从0开始的
- set()方法:用于修改ArrayList中指定位置的元素。
-
fruit.set(1,"grape"); System.out.println(fruit);//[apple, grape, orange, pear]
修改下标位置为1的元素值为grape
- get()方法:用于获取ArrayList中指定位置的元素。
-
System.out.println(fruit.get(2));//orange
- size()方法:用于获取ArrayList的大小,即集合中元素的数量。
-
System.out.println(fruit.size());//4
- isEmpty()方法:用于检查ArrayList是否为空。
-
System.out.println(fruit.isEmpty());//false
除此之外,ArrayList还提供了一些其他方法,如迭代、排序、查找等操作,以便更方便地对集合进行操作和处理。
总之,ArrayList类的作用是提供了一个便于管理和操作一组对象的动态数组。它可以根据需要动态调整大小,并提供一系列方法来方便地添加、删除、修改和获取集合中的元素。
3.遍历集合中的元素
1.for循环遍历
1.fori遍历
ArrayList<Object> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i)+" ");
}
2.foreach遍历
ArrayList<Object> ls = new ArrayList<>();
ls.add("1");
ls.add("2");
ls.add("3");
ls.add("4");
ls.add("5");
for (Object l:
ls) {
System.out.print(l);
}
2.迭代法
Iterator<Object> it = ls.iterator();
while (it.hasNext()){
System.out.print(it.next());
}
这段代码是使用迭代器来遍历一个集合对象ls,并将每个元素打印出来。
首先,通过调用ls的iterator()方法,获得一个Iterator对象it。
然后,使用while循环和it.hasNext()方法来判断集合中是否还有下一个元素。
在循环体内部,使用it.next()方法获取下一个元素,并通过System.out.print()方法将其打印出来。注意,这里使用print而不是println,所以打印的元素会连续输出而不是每个元素占一行。
当集合中的所有元素都被遍历完毕后,循环结束。
3.stream流
list.forEach(System.out::print);
这段代码使用了Java 8的Lambda表达式和forEach方法来遍历一个集合对象list,并将每个元素打印出来。
forEach方法是集合的一个默认方法,它接受一个函数式接口Consumer作为参数。在这里,使用的是Java 8的方法引用语法System.out::print,表示将System.out的print方法作为Consumer的实现。可以将其看作是一个匿名函数,接受一个参数并执行System.out.print方法。
当调用list的forEach方法时,会将集合中的每一个元素依次传递给Consumer的accept方法进行处理。在这里,每个元素都会被传递给System.out.print方法进行打印。
所以,这段代码的作用就是遍历list中的每个元素,并将其打印出来。
4.案例:显示学生信息
1.创建一个学生类
public class Student {
private String name;
private String sex;
private int age;
public Student() {
}
public Student(String name, String sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", sex='" + sex + '\'' +
", age=" + age +
'}';
}
}
2.显示信息类(主类)
package com.H.Demo01_ArrayList;
import java.util.ArrayList;
/**
* @Description:
* @Author: Hongming
*/
public class StuTs {
public static void main(String[] args) {
ArrayList<Student> li = new ArrayList<>();
initStudent(li);
showStudent(li);
}
/**
* 显示学生信息
* @param li
*/
private static void showStudent(ArrayList<Student> li) {
for (Student stu:
li) {
System.out.printf("%-10s%-8s%-6d\n",stu.getName(),stu.getSex(),stu.getAge());
}
}
/**
* 添加学生信息
* @param li
*/
private static void initStudent(ArrayList<Student> li) {
li.add(new Student("张三","男",20));
li.add(new Student("李四","男",21));
li.add(new Student("王二","男",21));
li.add(new Student("周五","男",20));
li.add(new Student("赵六","男",20));
}
}
这段代码是一个简单的示例,它演示了如何使用ArrayList存储学生对象,并显示学生的信息。
首先,定义了一个名为Student的类,它有三个属性:name、sex和age,以及对应的getter和setter方法。
在StuTs类的main方法中,创建了一个ArrayList对象li来存储学生对象。然后,调用了initStudent方法来添加学生信息到li中。
initStudent方法使用li的add方法来添加了5个学生对象到li中,每个学生对象包括姓名、性别和年龄信息。
showStudent方法用于显示学生信息,它使用了增强型for循环来遍历li中的每个学生对象,然后使用System.out.printf方法来格式化输出学生的姓名、性别和年龄。
最后,在main方法中调用了showStudent方法来显示学生信息。
整体来说,这段代码展示了如何使用ArrayList存储和显示学生信息。