目录
1:ArrayList类概述
底层数据结构是数组,查询快,增删慢 线程不安全,效率高
2:解释
由于ArrayLis类继承List而List继承Collection接口所以ArrayLis实现了他们的方法
3:ArrayList案例
存储字符串并遍历
package day25;
import java.util.ArrayList;
import java.util.Iterator;
public class Test1 {
public static void main(String[] args) {
ArrayList a = new ArrayList();//创建ArrayLis对象
//添加元素
a.add("hello");
a.add("world");
a.add("java");
a.add("hadoop");
//利用迭代器遍历集合
Iterator iterator = a.iterator();
while(iterator.hasNext()){
Object next = iterator.next();
System.out.println(next);
}
}
}
存储自定义对象并遍历
package day25;
public class Student {
private int age;
private String name;
public Student(int age, String name) {
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Student() {
}
@Override
public String toString() {
return "Student{" +
"age=" + age +
", name='" + name + '\'' +
'}';
}
}
package day25;
import java.util.ArrayList;
import java.util.Iterator;
public class Test4 {
public static void main(String[] args) {
ArrayList a = new ArrayList();//创建ArrayList对象
//创建三个学生对象
Student s1 = new Student(18, "小华");
Student s2 = new Student(19, "小亮");
Student s3 = new Student(20, "小明");
//将xuesh对象加入到集合中
a.add(s1);
a.add(s2);
a.add(s3);
//迭代器获取集合中每个元素
Iterator iterator = a.iterator();
while(iterator.hasNext()){
Object next = iterator.next();
Student s=(Student) next;//向下转型
System.out.println(s.getName()+"**"+s.getAge());//输出学生姓名和年龄
}
}
}
去除集合中字符串的重复值(字符串的内容是否相同)
第一种:定义一个新数组来存储contains判断
package day25;
import java.util.ArrayList;
import java.util.Iterator;
public class Test5 {
public static void main(String[] args) {
ArrayList a = new ArrayList();//创建ArrayLis对象
ArrayList b = new ArrayList();
//添加元素
a.add("hello");
a.add("world");
a.add("java");
a.add("hadoop");
a.add("hello");
a.add("world");
a.add("java");
a.add("abc");
//迭代器获取集合a中元素
Iterator iterator = a.iterator();
while(iterator.hasNext()){
Object next = iterator.next();
//判断b中是否有相同的元素,没有就添加到b中
if(!b.contains(next)){
b.add(next);
}
}
//迭代器获取b中元素
Iterator iterator1 = b.iterator();
while(iterator1.hasNext()){
Object next = iterator1.next();
System.out.println(next);
}
}
}
第二种:双重循环利用选择排序与后面的数比较若是有重复就remove
package day25;
import java.util.ArrayList;
import java.util.Iterator;
public class Test6 {
public static void main(String[] args) {
ArrayList a = new ArrayList();//创建ArrayLis对象
//添加元素
a.add("hello");
a.add("world");
a.add("java");
a.add("hadoop");
a.add("hello");
a.add("world");
a.add("java");
a.add("abc");
//利用选择排序查找重复的元素
for(int i=0;i<a.size();i++){
for(int j=i+1;j<a.size()-1;j++){
//判断要是有重复就删除,然后前移一个
if(a.get(i).equals(a.get(j))){
a.remove(j);
--j;
}
}
}
//迭代器变量a集合
Iterator iterator = a.iterator();
while(iterator.hasNext()){
Object next = iterator.next();
System.out.println(next);
}
}
}