集合
为什么要有集合?
集合就是一个容器,和数组一样都是用来装东西的。集合能自动扩容,可以更快的解决庞大的数据。比数组更高效。数组的长度是固定,操作庞大数据时需要手动扩容。
集合存储数据类型的特点
数组可以存储基本数据类型也可以存储引用数据类型。但是集合只能存储储引用数据类型,存储基本数据类型的时候必须转换为对应的包装类。
集合和数组的对比
①长度:数组的长度是固定,集合的长度是可变。
②存储类型:
数组可以存储基本数据类型也可以存储引用数据类型。
集合只能存储储引用数据类型,存储基本数据类型转换为对应的包装类。
ArrayList集合入门
!!!这里学习只是一个小小的入门。
java
public class ArrayListTest {
public static void main(String[] args) {
//这里注意:
// <>:指的是泛型,类型参数用于类的定义中,则该类被称为泛型类.
//JDK1.7 的写法
//ArrayList<String> list = new ArrayList<String>();
//此时已经创建 ArrayList对象,而Java已经写好了这个类,直接使用即可
//JDK1.8以后写法
ArrayList<String> list = new ArrayList<>();
System.out.println(list);
//ArrayList只能操作引用数据类行,其输出的不是地址,而是集合中存储的内容
//使用 "[]"括起来的所有的内容。
//ArrayList的基本使用
}
}
ArrayList集合简单使用
java
/**
* 成员方法:
* boolean add(E e) 添加元素,从末尾添加
* void add(int index, E element) 将指定元素插入此列表中的指定位置。
*
* boolean remove(E e) 删除元素,从该列表中删除指定元素的第一个匹配项(如果存在)。
* E remove(int index) 删除此列表中指定位置的元素。
*
* E set(int index, E element) 修改元素,用指定的元素替换此列表中指定位置的元素。
*
* E get(int index, E element) 查询元素,返回此列表中指定位置的元素。
* int size() 返回此列表中的元素数。 获取长度
*
* */
public class ArrayListTest {
public static void main(String[] args) {
//1.创建一个集合
ArrayList<String> list = new ArrayList<>();
//2.添加元素
list.add("yyds");
list.add("dddd");
list.add("ootd");
//System.out.println(list);
/**
//3.删除元素
list.remove("dddd"); //在表中匹配删除项,存在就删除
list.remove(1); //删除此列表中指定位置的元素
//System.out.println(list);
*/
//4.修改元素
list.set(2,"hhhh");//用指定的元素替换此列表中指定位置的元素
//System.out.println(list);
//5.查询元素
list.get(2);
// System.out.println(list);//返回此列表中指定位置的元素
//6.遍历集合
for (int i = 0; i < list.size(); i++) {
//i:是索引
//size():集合的长度
list.get(i);//获取长度
}
System.out.println(list);
}
}
简单练习
需求:定义一个集合,添加字段,并进行遍历
遍历格式参照:[元素1,元素2,元素3...]
java
public class ArrayListTest {
/*
* 需求:定义一个集合,添加字段,并进行遍历
* 遍历格式参照:[元素1,元素2,元素3...]
* */
public static void main(String[] args) {
//创建ArrayList对象
ArrayList<String> list = new ArrayList();
//添加元素
list.add("昨天学习了");
list.add("今天学习了");
list.add("后天学习了");
//遍历
System.out.print("[");
for (int i = 0; i < list.size(); i++) {
if (i == list.size() - 1) {
System.out.print(list.get(i));
}else {
System.out.print(list.get(i)+", ");
}
}
System.out.println("]");
}
}
输出:

需求:定义一个集合,添加数字,并进行遍历
遍历格式参照:[元素1,元素2,元素3...]
java
public class ArrayListTest2 {
/*
* 需求:定义一个集合,添加数字,并进行遍历
* 遍历格式参照:[元素1,元素2,元素3...]
* */
public static void main(String[] args) {
// 冷知识:这里的说的集合只能存放引用数据类型,所以这里引入包装类
/**
*
* byte Byte
* short Short
* int Integer
* char Character
* long Long
* float Float
* double Double
* boolean Boolean
*
*/
//创建集合
ArrayList<Integer> list = new ArrayList();
//这里JDK1.5以后呢 int 和 Integer 是自动转换
//添加元素
list.add(111);
list.add(222);
list.add(333);
//遍历
System.out.print("[");
for (int i = 0; i < list.size(); i++) {
if(i == list.size()-1){
System.out.print(list.get(i));
}else{
System.out.print(list.get(i)+", ");
}
}
System.out.print("]");
}
}
输出:

需求:
1.自定义集合,存入三个对象
用户属性:id,username,password
2.要求:自定义一个方法,根据id查找对应大的信息。
如果存在,返回true / 如果存在,返回索引
如果不存在,返回false / 如果不存在,返回-1
java
//用户对象
public class User {
private String id;
private String username;
private String password;
public User() {
}
public User(String id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id='" + id + '\'' +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
public class ArrayLListTest {
public static void main(String[] args) {
/*
需求:
1.自定义集合,存入三个对象
用户属性:id,username,password
2.要求:自定义一个方法,根据id查找对应大的信息。
如果存在,返回true / 如果存在,返回索引
如果不存在,返回false / 如果不存在,返回-1
* */
//1.创建集合
ArrayList<User> list = new ArrayList<>();
//2.创建用户对象
User user1 = new User("0001", "aa", "111");
User user2 = new User("0002", "jj", "222");
User user3 = new User("0003", "cc", "333");
//3.添加三个对象
list.add(user1);
list.add(user2);
list.add(user3);
//4.调用方法,查找id是否存在,直接打印
System.out.println(contains(list, "0003"));
//System.out.println(getIndex(list, "0004"));
}
public static boolean contains(ArrayList<User> list, String id) {
/*//遍历集合
for (int i = 0; i < list.size(); i++) {
User u = list.get(i);
String uid = u.getId();
if (uid.equals(id)) {
return true;//如果存在就返回true
}
}
//当集合内的数据全部比较完了,还是没有就直接返回false
return false;*/
return getIndex(list, id) >= 0;
}
public static int getIndex(ArrayList<User> list, String id) {
//遍历集合
for (int i = 0; i < list.size(); i++) {
User u = list.get(i);
String uid = u.getId();
if (uid.equals(id)) {
return i;//如果存在就返回索引
}
}
return -1;//当集合内的数据全部比较完了,还是没有就直接返回-1
}
}
输出:

需求:
1.定义一个手机对象Phone
属性:品牌brand、价格price
2.定义及一个集合,存入三个手机对象,分别是小米3999,华为7999,苹果5999
3.定义一个方法,将价格低于6999的手机信息返回
java
//手机对象
public class Phone {
// 属性:品牌brand、价格price
private String brand;
private int price;
public Phone() {
}
public Phone(String brand, int price) {
this.brand = brand;
this.price = price;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}
public class ArrayListTest {
/*
* 需求:
1.定义一个手机对象Phone
属性:品牌brand、价格price
2.定义及一个集合,存入三个手机对象,分别是小米3999,华为7999,苹果5999
3.定义一个方法,将价格低于6000的手机信息返回
* */
public static void main(String[] args) {
//1.创建集合
ArrayList<Phone> list = new ArrayList<>();
//2.创建手机对象
Phone p1 = new Phone("小米", 3999);
Phone p2 = new Phone("华为", 7999);
Phone p3 = new Phone("苹果", 5999);
//3.添加手机对象到集合
list.add(p1);
list.add(p2);
list.add(p3);
//4.条用方法,返回手机信息且价格低于6999
ArrayList<Phone> phoneInfoList = getPhoneInfo(list);
//5.遍历集合
for (int i = 0; i < phoneInfoList.size(); i++) {
Phone phone = phoneInfoList.get(i);
System.out.println(phone.getBrand()+", "+phone.getPrice());
}
}
//定义方法
public static ArrayList<Phone> getPhoneInfo(ArrayList<Phone> list) {
//定义集合在存放价格低于6000的手机信息
ArrayList<Phone> phoneList = new ArrayList<>();
//遍历集合
for (int i = 0; i < list.size(); i++) {
Phone p = list.get(i);
if (p.getPrice() < 6000) {
phoneList.add(p);
}
}
return phoneList;
}
}
输出:
