Java中的集合-Array List

集合(set)概述

/*
 * 集合类的特点:
 * 		长度可变。
 * 
 * ArrayList<E>:
 * 		大小可变数组的实现
 * 
 * 		<E>:是一种特殊的数据类型,泛型【泛型也就是装在集合中的所有元素,全都是统一类型,如Student返回的值就必须以Studen来接,如:Student str = s.getName】。
 * 		怎么用呢?
 * 			在出现E的地方我们使用引用数据类型替换即可
 * 			举例:ArrayList<String>,ArrayList<Student>
 *		注意事项:泛型只能是引用类型,不能是基本类型
 * 
 * 构造方法:
 * 		ArrayList()
 */

说简单点就是可灵活操作的数组

添加,获取元素,删除,获取长度

添加方法是:.add(e)add(int index,E element);  
获取方法是:.get(index);只是输出不改变原集合;  
删除方法是:.remove(index), 删除指定索引处的元素,返回被删除的元素; 
.remove(Object o); 删除指定的元素,返回删除是否成功;

获取集合中元素个数(跟获取数组长度是一个意思):.size();

import java.util.ArrayList;
import java.util.List; // 使用List不要忘了导入这个包

public class test {
	public static void main(String[] args) {
		List<String> person = new ArrayList<String>(); 
		person.add("A"); // 索引为0 //.add(e)
		person.add("B"); // 索引为1
		person.add("C"); // 索引为2

		person.add(1, "我要插队"); // 向下标为1的位置添加一个元素(原1下标的元素向后移动)

		person.remove(3); // .remove(index)
		person.remove("B"); // .remove(Object o)

		String per = "";
		per = person.get(1); // 获取下标为1的元素值
		System.out.println("集合中小标为1的元素是:" + per);
		
		int count = person.size(); // 获取集合输数据个数
		System.out.println("集合中一共还有【" + count + "】个元素");
		
		for (int i = 0; i < person.size(); i++) { // 获取数组长度
			System.out.println("person[" + i + "]:" + person.get(i)); // .get(index)
		}
	}
}

eclipse执行结果:
    集合中小标为1的元素是:我要插队
    集合中一共还有【2】个元素
    person[0]:A
    person[1]:我要插队

遍历集合

示例代码:

/*
 * 遍历集合中的所有元素
 */
import java.util.ArrayList;
import java.util.List;

public class test {
	public static void main(String[] args) {
		List<String> arr = new ArrayList<>(); // 创建一个集合
		
		// 向集合中添加元素
		arr.add("张三");
		arr.add("李四");
		arr.add("王二");
		
		// 遍历集合
		for (int i = 0;i < arr.size(); i++) {
			String str = arr.get(i); // 标准写法这样后续方便进行二次操作
			System.out.println(str);
		}
	}
}

eclipse执行结果:
	张三
    李四
    王二

是否包含某个元素

方法:.contains(Object o),返回true或者false

import java.util.ArrayList;
import java.util.List; // 使用List不要忘了导入这个包

public class test {
	public static void main(String[] args) {
		List<String> fruits=new ArrayList<>();
        fruits.add("苹果");
        fruits.add("香蕉");
        fruits.add("桃子");
        //for循环遍历list
        for (int i = 0; i < fruits.size(); i++) {
            System.out.println(fruits.get(i));
        }
        String appleString="苹果";
        //true or false
        System.out.println("fruits中是否包含苹果:"+fruits.contains(appleString));
         
        if (fruits.contains(appleString)) {
            System.out.println("我喜欢吃苹果");
        }else {
            System.out.println("我不开心");
        }
	}
}

eclipse执行结果:
    苹果
    香蕉
    桃子
    fruits中是否包含苹果:true
    我喜欢吃苹果

修改(替换)指定索引元素

set(index, element); 修改指定索引处的元素,返回被修改的元素

.add(index, element); 将指定索引位置的元素插入为新的元素,原有元素向后移
**注意:** 他们不一样有区别的

import java.util.ArrayList;
import java.util.List; // 使用List不要忘了导入这个包

public class test {
	public static void main(String[] args) {
		String a="白龙马", b="沙和尚", c="八戒", d="唐僧", e="悟空";
        List<String> people = new ArrayList<>();
        people.add(a);
        people.add(b);
        people.add(c);
        people.set(0, d);   //.set(index, element);     //将d唐僧放到list中索引为0的位置,替换a白龙马
        people.add(1, e);   //.add(index, element);     //将e悟空放到list中索引为1的位置,原来位置的b沙和尚后移一位
         
        //增j加for循环遍历list
        for(String str : people){
            System.out.println(str);
        }
	}
}

eclipse执行结果:
    唐僧
    悟空
    沙和尚
    八戒

获取元素的索引

.indexOf(); 和 .lastIndexOf();

**注意:**他们不一样有区别的

  • indexOf 只匹配到第一个合适的,把位置返回
  • lastIndexOf 是匹配最后一个合适的,把位置返回
import java.util.ArrayList;
import java.util.List;

public class test {
	public static void main(String[] args) {
		List<String> names=new ArrayList<>();
        names.add("刘备");    //索引为0
        names.add("关羽");    //索引为1
        names.add("张飞");    //索引为2
        names.add("刘备");    //索引为3
        names.add("张飞");    //索引为4
        System.out.println(names.indexOf("刘备"));
        System.out.println(names.lastIndexOf("刘备"));
	}
}

eclipse执行结果:
    0
    3

ArrayList中存储基本类型数据

因为泛型中只能是引用类型,不能是基本类型,但是有的时候我们可能需要存储一些基本类型数据,那该怎么办呢?

import java.util.ArrayList;
import java.util.List; // 使用List不要忘了导入这个包

/*
 * 如果希望向集合ArrayList当中存储基本类型数据,必须使用基本类型对应的“包装类”。
 * 
 * 从JDK 1.5+开始,支持自动装箱、自动拆箱。
 * 
 * 自动装箱:基本类型 --> 包装类型(自动进行类型转换)
 * 自动拆箱:包装类型 --> 基本类型(自动进行类型转换)
 */
public class Demo05ArrayListBasic {

    public static void main(String[] args) {
        List<String> listA = new ArrayList<>();
        // 错误写法!泛型只能是引用类型,不能是基本类型
        // List<int> listB = new ArrayList<>();

        List<Integer> listC = new ArrayList<>();
        listC.add(100);
        listC.add(200);
        System.out.println(listC); // [100, 200]

        int num = listC.get(1);
        System.out.println("第1号元素是:" + num);
    }
}
posted @ 2019-08-02 12:35  每一天,为明天。  阅读(275)  评论(0)    收藏  举报