赞
踩
集合ArrayList
前言
众所周知,前期我们学过数组,也学习过二维的和三维的数组,更有的10维的数组都干出来过,那么我们可以使用更加强大的集合来遍历和存放数据,她可以添加和减小也可以增加和删除,可以更加方便的删除数据而不需要遍历一遍后删除在继续遍历,才可输出正常的数据而不报错!在编程时,可以使用数组来保存多个对象,但数组长度不可变化,一旦在初始化数组时指定了数组长度,这个数组长度就是不可变的。如果需要保存数量变化的数据,数组就有点无能为力了。而且数组无法保存具有映射关系的数据,如成绩表为语文——79,数学——80,这种数据看上去像两个数组,但这两个数组的元素之间有一定的关联关系。为了保存数量不确定的数据,以及保存具有映射关系的数据(也被称为关联数组),Java 提供了集合类。集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。Java 所有的集合类都位于 java.util 包下,提供了一个表示和操作对象集合的统一构架,包含大量集合接口,以及这些接口的实现类和操作它们的算法。集合类和数组不一样,数组元素既可以是基本类型的值,也可以是对象(实际上保存的是对象的引用变量),而集合里只能保存对象(实际上只是保存对象的引用变量,但通常习惯上认为集合里保存的是对象)。Java 集合类型分为 Collection 和 Map,它们是 Java 集合的根接口,这两个接口又包含了一些子接口或实现类。图 1 和图 2 分别为 Collection 和 Map 的子接口及其实现类。
而List 是一个有序、可重复的集合,集合中每个元素都有其对应的顺序索引。List 集合允许使用重复元素,可以通过索引来访问指定位置的集合元素。List 集合默认按元素的添加顺序设置元素的索引,第一个添加到 List 集合中的元素的索引为 0,第二个为 1,依此类推。List 实现了 Collection 接口,它主要有两个常用的实现类:ArrayList 类和 LinkedList 类。
而ArrayList 类
ArrayList 类实现了可变数组的大小,存储在内的数据称为元素。它还提供了快速基于索引访问元素的方式,对尾部成员的增加和删除支持较好。使用 ArrayList 创建的集合,允许对集合中的元素进行快速的随机访问,不过,向 ArrayList 中插入与删除元素的速度相对较慢。ArrayList 类的常用构造方法有如下两种重载形式:
ArrayList():构造一个初始容量为 10 的空列表。
ArrayList(Collection<?extends E>c):构造一个包含指定 Collection 元素的列表,这些元素是按照该 Collection 的迭代器返回它们的顺序排列的。
ArrayList 类除了包含 Collection 接口中的所有方法之外,还包括 List 接口中提供的如表 1 所示的方法。
表 1 ArrayList类的常用方法
方法名称 | 说明 |
---|---|
E get(int index) | 获取此集合中指定索引位置的元素,E 为集合中元素的数据类型 |
int index(Object o) | 返回此集合中第一次出现指定元素的索引,如果此集合不包含该元 素,则返回 -1 |
int lastIndexOf(Object o) | 返回此集合中最后一次出现指定元素的索引,如果此集合不包含该 元素,则返回 -1 |
E set(int index, Eelement) | 将此集合中指定索引位置的元素修改为 element 参数指定的对象。 此方法返回此集合中指定索引位置的原元素 |
List<E> subList(int fromlndex, int tolndex) | 返回一个新的集合,新集合中包含 fromlndex 和 tolndex 索引之间 的所有元素。包含 fromlndex 处的元素,不包含 tolndex 索引处的 元素 |
集合的遍历
列一
package arrayList; import java.util.ArrayList; public class arrayList { public static void main(String[] args) { // 创建集合 ArrayList<String> list = new ArrayList<>(); // 添加基本元素 list.add("点赞了么?"); 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("]"); } }
集合的遍历添加基本类型数据
需要包装 类
基本类型包装类
基本类型 | 包装类型 |
---|---|
byte | Byte |
short | Short |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
char | Character |
int | Integer |
示例2
package arrayList; import java.util.ArrayList; public class test2 { public static void main(String[] args) { // 创建集合 ArrayList<Integer> list = new ArrayList<>(); // 这里加入了Integer // 添加元素 list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); list.add(6); // 遍历 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("]"); } }
我们可以声明一个新的类,将这个集合声明成存放这个类的中类型的数据的集合,使用到了包装(需要将类中的元素声明成私有的类型)不然数据不可使用或是报错!
以此出:
集合 类 的代码
package arrayList; import java.util.ArrayList; public class test3 { public static void main(String[] args) { // 创建集合 ArrayList<Student> list = new ArrayList<>(); // 创建学生对象 Student student01 = new Student("张三",22); Student student02 = new Student("王二",21); Student student03 = new Student("米丝",25); // 添加元素 list.add(student01); list.add(student02); list.add(student03); //遍历集合 for (int i=0; i < list.size();i++){ // i 索引 list.get(i)元素/学生对象 Student student = list.get(i); System.out.println(student.getName()+","+student.getAge()); } } }
ArrayList<Student>中的Student类的代码
package arrayList; public class Student { /* * 私有化成员变量 * 空参构造 * 带全部参数的构造方法 * get/set 方法 * * */ private String name; private int age; public Student(){ } public Student(String name,int age){ this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
做到的需求:
定义集合,添加“学生”对象,遍历
学生类属性:姓名,年龄
新的要求:键盘录入
如何键盘录入数据呢?先添加好集合首先因为集合的初始长度是0所以在以下for循环中不能使用集合来进行判断,而是给定一个固定值才行
列:
package arrayList; import java.util.ArrayList; import java.util.Scanner; public class studentTest1 { public static void main(String[] args) { // 创建集合 集合创建出来后,长度是默认的0 ArrayList<Student> list = new ArrayList<>(); // 键盘录入学生信息并添加到集合当中 Scanner scanner = new Scanner(System.in); for (int i = 0; i < 3 ; i++){ // 学生对象 Student student = new Student(); System.out.println("请输入学生姓名:"); String name = scanner.next(); System.out.println("请输入学生年龄:"); int age = scanner.nextInt(); // 把获取的值赋值给 对象 student.setName(name); student.setAge(age); // 学生对象添加到集合中 list.add(student); } // 输出 存放的数据数目 System.out.println(list.size()); for (int i=0;i<list.size();i++){ Student student = list.get(i); System.out.println(student.getName()+","+student.getAge()); } } }
那么如何添加判断呢
列:
package arrayList; import java.util.ArrayList; public class ifArrayList { public static void main(String[] args) { ArrayList<User> list = new ArrayList<>(); // 创建用户对象 User ur01 = new User("001","s","123456"); User ur02 = new User("002","a","1234567"); User ur03 = new User("003","d","12345678"); // 添加到对象 list.add(ur01); list.add(ur02); list.add(ur03); } public static boolean contains(ArrayList<User> list,String uuid){ for (int i=0;i<list.size();i++){ // list.get(i).getUuid().equals(uuid); User u =list.get(i); String id = u.getUuid(); if (id.equals(uuid)){ return true; } } // 循环结束 即比较完毕 return false; } }
User 类
package arrayList; public class User { private String uuid; private String username; private String password; public User() { } public User(String uuid, String username, String password) { this.uuid = uuid; this.username = username; this.password = password; } public String getUuid() { return uuid; } public void setUuid(String uuid) { this.uuid = uuid; } 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; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。