【JAVA】关于ArrayList类的添加、删除、修改、查询、排序、最大值、最小值的傻瓜用法(“纯源代码+注释”招呼)。

常用方法解释
add([int index],E element)和addAll([int index],Collection c)增加元素,起始位置为0
 object get(int index)通过索引号,获取元素值
boolean contains(Object o)判断元素是否存在,返回boolean值
boolean containsAll(Collection c)判断元素是否存在,返回boolean值
size()返回集合数量(对象是行数)

boolean  contains

boolean containsAll(Collection c)

判断元素是否存在
set(int index,Object o)覆盖或修改元素值 
indexOf(Object o) 起始位置为0,查某个指定的字符串在字符串首次出现的位置(索引值),前往后查 
lastIndexOf(Object o)反向顺序,是从右向左查某个指定的字符串在字符串中最后一次出现的位置也,从后往前查。
toArray()把内容放到数组中

iterator()

listIterator([int index]) 

迭代器

remove(int index)

remove(Object o)

removeAll(Collection c)

删除元素

IsEmpty()

判断元素值是否为空
clear()清空集合

 

 

 

 

 

 

0.【一个菜鸟被绕晕的问题】

List m_student = new ArrayList(); // 建立一个空的ArrayList集合

ArrayList m_student = new ArrayList(); // 建立一个空的ArrayList集合

List m_student = new LinkedList(); // 建立一个空的ArrayList集合

LinkedList m_student = new LinkedList(); // 建立一个空的ArrayList集合

到底是用List 还是用ArrayList?其实后面的方法不一样。LIst是通用方法,而ArrayList和LinkedList有自己的方法。

 

 一、把单独的“字符串”存入到ArrayList容器类中。 

 

package book;
import java.util.ArrayList;
public class book {

	public static void main(String[] args) {
		
		ArrayList<String> m_book = new ArrayList<String>();  // 声明一个对象 
		
		// ======== 【添加】往m_book中添加内容,每个内容一个元素。
		
		m_book.add("1、《Java大全》");
		m_book.add("2、《Excel入门》");
		m_book.add("3、《Word精通》");
		m_book.add("4、《HTML指南》");
		m_book.add("5、《SQL数据库基础》");
		
		m_book.add(1,"2、《php攻略》");  // 在第1个元素之前接入内容,注意:是从0开始的,这里的1就是2.
		
		// 循环遍历出 m_book中每一个元素的值。 
		
		for(String i:m_book)
		{
			System.out.println(i);
		}
		
		// ======= 【删除】删除m_book某元素的值。 

		System.out.println("---------- 删除某个元素");
		m_book.remove(2);  // 删除第2个元素,注意:从0开始计算,这里的2就是3.
		for(String i:m_book)
		{
			System.out.println(i);
		}
		
		System.out.println("--------- 按内容删除");
		m_book.remove("5、《SQL数据库基础》");  // 按内容删除,注意:内容要一模一样.
		for(String i:m_book)
		{
			System.out.println(i);
		}
		
		System.out.println("---------------\\ 清空");
		 m_book.clear();  // 清空内容.
		for(String i:m_book)
		{
			System.out.println(i);
		}
		
		// ======= 【修改或替换】m_book某元素的值。 
		
		System.out.println("------- \\ 修改替换某个元素内容");
		m_book.add("1、《Java大全》");
		m_book.add("8、《Excel入门》");
		m_book.add("3、《Word精通》");
		m_book.add("4、《HTML指南》");
		m_book.add("5、《SQL数据库基础》");
		
		m_book.set(1,"2、《Excel入门》"); // 替换第1个元素内容,注意,从0开始,这里的1是2.
		
		for(String i:m_book)
		{
			System.out.println(i);
		}
		
		// ======= 【查询】某一个元素的值。 
		
		System.out.println("------- \\ 查询】某一个元素的值");
		
		String aaa=m_book.get(1); // 替换第1个元素内容,注意,从0开始,这里的1是2.
		
		System.out.println("第二个元素值是:"+aaa);
		
	}

}

二、把一个类的“数组值”存入到ArrayList容器类中。

1、database.java 

package Book;
import java.util.ArrayList;
import org.omg.CORBA.PUBLIC_MEMBER;

public class database {

	private ArrayList<book> ListBook = new ArrayList<book>();  // book.java类关联ArrayList

	public void add(book booklist) // 往ArrayList中添加book类数组格式的内容
	{
		ListBook.add(booklist);
	}		
	
	public void list()  // 遍历ListBook中的值
	{
		for (book booklist : ListBook)
		{
			booklist.print(); // 调用book中的print方法
		}
	}
		
	public static void main(String[] args)  // 向ArrayList中写入内容
	{
	 database aaa = new database();
	 aaa.add(new book("JAVA语言开发", 45, 568, "张杰"));
	 aaa.add(new book("Python开发", 88, 300, "牛人"));
	 aaa.list();
	}
}

2、Book.java 

package Book;
public class book {

    // ================= 建立了书的参数,也可以叫字段名
	
	private String name;  // 书的名称
	private int price; // 书的价格
	private int page; // 书的页数
	private String men; // 书的作
	
	public book(String name, int price, int page, String men) // 调用参数 
	{
		//super();
		this.name = name;
		this.price = price;
		this.page = page;
		this.men = men;
	}

	public void print()  // 显示内容
	{
		System.out.println("书名"+name+"    价格"+price+"元");
		
	}
	public static void main(String[] args) {

	}


}

三、ArrayList的另一个操作构造函数的实例 

1、Student.java (构造函数类)

package z_ArrayList;

public class Student {
	

	private int id;   // 编号
	private String name;// 姓名
	private String old;// 年龄
	
	public Student() {}
	public Student(int id, String name, String old) {

		this.id = id;
		this.name = name;
		this.old = old;
	}
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getOld() {
		return old;
	}
	public void setOld(String old) {
		this.old = old;
	}	
	
}

2、AList.java(操作类)

package z_ArrayList;

import java.util.*;
public class AList {

	public static void main(String[] args) 
	{
		
		List m_student = new ArrayList();  // 建立一个空的ArrayList集合
		Student student_1=  new Student(1,"张三","15");  // 实例化Student类,并存入数据"
		Student student_2=  new Student(2,"李四","16");
		Student student_3=  new Student(2,"李四","16");
		
		// --------- 添加(是追加,不是插入) add
		
		m_student.add(student_1);  // 把类存入数组ArrayList中 
		m_student.add(student_2);
		m_student.add(new Student(3,"王五","18"));  // 也可以直接写入类对象

		m_student.add(new Student(2,"店小二","15"));  // 在最后插入一行数据
		
		
		
		System.out.println("学生信息的行数:"+m_student.size());  // 判断对象数组有几行
		
		// ----------  查询和遍历 for
		
		for(int i=0;i<m_student.size();i++)
		{
			Student student = (Student)m_student.get(i);
			System.out.println("第"+student.getId()+"行的学生信息的姓名:"+student.getName()+"  年龄:"+student.getOld());
		}
		
		// ------------ 判断对象是否存在contains
		System.out.println(m_student.contains(student_2)); // 【contains】判断是含否有对象,返回true		
		System.out.println(m_student.contains(student_3)); // 【contains】判断是含否有对象,是指针对比,不是值对比,所以返回false
		System.out.println(m_student.contains(new Student(3,"王五","18"))); // 【contains】判断是含否有对象,是指针对比,不是值对比,所以返回false
		
		m_student.remove((student_2)); // 【remove】删除元素		
		m_student.remove((new Student(2,"店小二","15"))); // remove,不能删除值,所以无效		
		m_student.remove(2); // remove,不能删除值,但可以用【索引号】,所以,这个可行,从0开始计算
		
		System.out.println(m_student.contains(student_2)); // 因为删除了,所以返回为false
		m_student.set(0,new Student(2,"张三被我替换了","15")); // set,修改元素值	
		
		for(int i=0;i<m_student.size();i++)
		{
			Student student = (Student)m_student.get(i);
			System.out.println("第"+student.getId()+"行的学生信息的姓名:"+student.getName()+"  年龄:"+student.getOld());
		}
		
	}

}

四、ArrayList的泛型实例 

为什么要用泛型?不用再GET获取值时,强制转换格式了。

正常:List m_student = new ArrayList(); 

泛型:List<Student> m_student = new ArrayList<Student>();  把构造函数格式或数据类型存入了。

正常get调用: Student student = (Student)m_student.get(i);

泛型get调用: Student student = m_student.get(i);

package z_ArrayList;

import java.util.ArrayList;
import java.util.List;

public class fanxing {

	public static void main(String[] args) {
		List<Student> m_student = new ArrayList<Student>();  // 建立一个空的ArrayList集合
		// List m_student = new ArrayList();  // 建立一个空的ArrayList集合

		Student student_1=  new Student(1,"张三","15");  // 实例化Student类,并存入数据"
		Student student_2=  new Student(2,"李四","16");
		Student student_3=  new Student(2,"李四","16");	
		
		// --------- 添加(是追加,不是插入) add
		
		m_student.add(student_1);  // 把类存入数组ArrayList中 
		m_student.add(student_2);
		m_student.add(new Student(3,"王五","18"));  // 也可以直接写入类对象

		m_student.add(new Student(2,"店小二","15"));  // 在最后插入一行数据
		
		
		
		System.out.println("学生信息的行数:"+m_student.size());  // 判断对象数组有几行
		
		// ----------  查询和遍历 for
		
		for(int i=0;i<m_student.size();i++)
		{
			Student student = m_student.get(i);
			System.out.println("第"+student.getId()+"行的学生信息的姓名:"+student.getName()+"  年龄:"+student.getOld());
		}
		
		// ------------ 判断对象是否存在contains
		System.out.println(m_student.contains(student_2)); // 【contains】判断是含否有对象,返回true		
		System.out.println(m_student.contains(student_3)); // 【contains】判断是含否有对象,是指针对比,不是值对比,所以返回false
		System.out.println(m_student.contains(new Student(3,"王五","18"))); // 【contains】判断是含否有对象,是指针对比,不是值对比,所以返回false
		
		m_student.remove((student_2)); // 【remove】删除元素		
		m_student.remove((new Student(2,"店小二","15"))); // remove,不能删除值,所以无效		
		m_student.remove(2); // remove,不能删除值,但可以用【索引号】,所以,这个可行,从0开始计算
		
		System.out.println(m_student.contains(student_2)); // 因为删除了,所以返回为false
		m_student.set(0,new Student(2,"张三被我替换了","15")); // set,修改元素值		
	
		
		for(int i=0;i<m_student.size();i++)
		{
			Student student = m_student.get(i);   // 不用强转了。
//			Student student = (Student)m_student.get(i);
			System.out.println("第"+student.getId()+"行的学生信息的姓名:"+student.getName()+"  年龄:"+student.getOld());
		}
	}

}

五、ArrayList排序、最大值、最小值(单项值)

package z_ArrayList;

import java.util.*;
public class z_Sort {

	public static void main(String[] args) {
		
		List<String> m_list=new ArrayList<String>();
		m_list.add("C1");
		m_list.add("Z2");
		m_list.add("L3");
		m_list.add("z2");
		m_list.add("Q4");
		
		System.out.println("======= 对字符型最大值、最小值、排序 ========\n");
		System.out.println( "最大值是:"+Collections.max(m_list));
		System.out.println( "最小值是:"+Collections.min(m_list));
		System.out.println("\n== 正常排序 ==\n");

		Collections.sort(m_list);
		for(int i=0;i<m_list.size();i++){
			System.out.println( m_list.get(i));
		}
		
		System.out.println("\n== 倒排序 ==\n");
		
		Collections.reverse(m_list);   // reverse,倒序
		for(int i=0;i<m_list.size();i++){
			System.out.println( m_list.get(i));
		}
		
		System.out.println("\n======= 对数字,最大值、最小值、排序 ========\n");
		
		List<Integer> mm_list=new ArrayList<Integer>();
		mm_list.add(1);
		mm_list.add(2);
		mm_list.add(3);
		mm_list.add(4);
		mm_list.add(5);
		
		System.out.println( "最大值是:"+Collections.max(mm_list));
		System.out.println( "最小值是:"+Collections.min(mm_list));
		System.out.println("\n== 正常排序 ==\n");

		Collections.sort(mm_list);
		for(int i=0;i<mm_list.size();i++){
			System.out.println( mm_list.get(i));
		}
		
		System.out.println("\n== 倒排序 ==\n");
		
		Collections.reverse(mm_list);   // reverse,倒序
		for(int i=0;i<mm_list.size();i++){
			System.out.println( mm_list.get(i));
		}
		

	}

}

五、ArrayList排序、最大值、最小值(多个对象的集合)

1.Student.java(构造函数类)

两个关键点:基于compareTo实现。

1、public class Student implements Comparable {

2、这段代码

	// ========== 按学号排序方法
	
	public int compareTo(Object o)
	{
		Student student=(Student)o;
		if(this.id==student.id)
		{
			return 0;
		}
		else if(this.id>student.id) 
		{		
			return 1;
		}
		else if(this.id<student.id) 
		{
			return -1;
		}
		 return 0;
	}

完整代码:

package z_ArrayList;

public class Student implements Comparable {
	

	private int id;   // 编号
	private String name;// 姓名
	private String old;// 年龄
	
	public Student() {}
	public Student(int id, String name, String old) {

		this.id = id;
		this.name = name;
		this.old = old;
	}
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getOld() {
		return old;
	}
	public void setOld(String old) {
		this.old = old;
	}
	
	// ========== 按学号排序方法
	
	public int compareTo(Object o)
	{
		Student student=(Student)o;
		if(this.id==student.id)
		{
			return 0;
		}
		else if(this.id>student.id) 
		{		
			return 1;
		}
		else if(this.id<student.id) 
		{
			return -1;
		}
		 return 0;
	}
		
}

2.Sort.java(排序、最大化、最小化类)

主要是:Collections.sort(m_student);

package z_ArrayList;

import java.util.*;

public class Sort {

	public static void main(String[] args) {
		

			List<Student> m_student = new ArrayList<Student>();  // 建立一个空的0ArrayList集合

			Student student_1=  new Student(3,"张三","15");  // 实例化Student类,并存入数据"
			Student student_2=  new Student(1,"李四","18");
			Student student_3=  new Student(2,"周二","17");	
			Student student_4=  new Student(4,"王五","16");	
			
			m_student.add(student_1);  // 把类存入数组ArrayList中 
			m_student.add(student_2);
			m_student.add(student_3);
			m_student.add(student_4);
			
			// ----------  查询和遍历 for
			
			Collections.sort(m_student);
			
			for(int i=0;i<m_student.size();i++)
			{
				Student student = m_student.get(i);
				System.out.println(student.getId()+" "+student.getName()+"  年龄:"+student.getOld());
			}

	}
}

 

 

 

 

 

 

 

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敦厚的曹操

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值