Java中的常见集合

(1)集合框架概述

Java集合大致分为List、Set、Map和Queue
Collection是一个顶级接口,其子接口有,List、Set、Queue
List:有序(存放和取出顺序是一致的)、有索引、可重复
Set:无序、无索引、不可重复

(2)ArrayList

ArrayList初始化长度为10,扩容为原来的1.5倍
​
构造方法:
    
   public ArrayList(int initialCapacity) :创建给定容量的ArrayList,initialCapacity的值不能小于0,不能大于Integer能表示的最大值
   public ArrayList():创建ArrayList对象,默认创建一个空数组。
   public ArrayList(Collection<? extends E> c):传入一个集合,以集合中元素为初始元素创建对象
​
常用方法
​
    add(Object o)  添加数据                     
    add(int index,Object o)  在制定索引处添加元素    
    size()  获取元素个数                   
    get(int index) 获取索引处的元素               
    isEmpty()  判断集合是否为空               
    indexOf(Object o)  判断某个元素第一次出现的位置   
    E remove(int index)  移除索引处元素,并返回该元素   
    boolean remove(Object o)  移除元素                       
    clear()  清空元素                       
    set(int index ,E e) 修改索引处的元素               
    iterator()   获取迭代器                     
    trimToSize()  减少容量至当前元素个数         
    contains(Object o)  判断是否包含某个元素           
    lastIndexOf(Object o)  判断某个元素最后一次出现的位置 
    toArray()   将集合转换为数组               
    addAll(Collection<? extends E> c)  集合中添加集合                 
    addAll(int index, Collection<? extends E> c)   索引处添加集合                 
    retainAll(Collection c)   求两个集合的交集               
    removeAll(Collection<?> c)  移除传入集合内的元素           
    subList(int fromIndex, int toIndex)  获取子集合            

/**

  • ArrayList练习 */

public class ArrayListDemo {

       public static void main(String[] args){

       //初始化list对象

       List<String> list = new ArrayList<>();

       //添加String对象

       list.add("孙少安");

       list.add("孙少平");

       list.add("田润叶");

       list.add("田润生");

       list.add("孙少安");

       list.add("路遥");

//List的若干遍历方式
​
System.out.println("----------------------");
//for循环
for(int i = 0;i<list.size();i++){
    System.out.println(list.get(i));
}
System.out.println("----------------------");
​
//foreach遍历
for(String s :list){
    System.out.println(s);
}
System.out.println("----------------------");
​
//迭代器遍历
Iterator<String>  iterator = list.iterator();
while(iterator.hasNext()){
    System.out.println(iterator.next());
}
System.out.println("----------------------");
​
ListIterator<String> listIterator = list.listIterator();
while(listIterator.hasNext()){
    //从头到尾遍历
    System.out.print(listIterator.nextIndex());
    System.out.println((String)listIterator.next());
}
System.out.println("----------------------");
while(listIterator.hasPrevious()){
    System.out.println(listIterator.nextIndex());
    System.out.println((String)listIterator.previous());
}
​
System.out.println("----------------------");
//lambda表达式
list.forEach(s -> System.out.println(s));

// List list = null; // list.size(); 空指针异常

    System.out.println("----------------------");
​
    //删除元素
    //注意!!!遍历时,集合list的容量会不断改变,会导致元素删除不干净

// for(int i = 0;i<list.size();i++){ // list.remove(i); // } // list.forEach(s -> System.out.println(s));

// for(int i = list.size()-1;i>=0;i--){ // list.remove(i); // } // System.out.println(list.size());//删除成功 // // System.out.println("----------------------");

// Iterator<String> iterator1 = list.iterator(); // while(iterator1.hasNext()){ // iterator1.next(); // iterator1.remove(); // } // for(int i = list.size()-1;i>=0;i--){ // list.remove(i); // } // System.out.println(list.size());//删除成功

    //list.clear();//最简单粗暴的方式
​
    //获取 list 对应索引的对象
    System.out.println(list.get(2));
    //判断集合是否为空
    System.out.println(list.isEmpty());
    //判断某个元素第一次出现的位置
    System.out.println(list.indexOf("孙少安"));
​
}

}

课后习题

定义一个学生类,类中包含如下成员变量 学生Id(studentId) 学生姓名(studentName) 学生年龄(studentAge) 学生性别(studentGender) 定义一个List,其中只能保存Student类型 1.定义add()方法,用户依次输入学生id,姓名,年龄,性别,并将该学生保存进List 2.定义remove()方法,用户输入id,可将对应的学生从list中删除 3.定义set()方法,用户输入学生编号,修改对应学生信息 4.定义find()方法,显示所有学生信息

/**

  • 学生类 */ public class Student { /**

    • 学生编号 */ protected int studentId;

    /**

    • 学生姓名 */ protected String studentName; /**

    • 学生年龄 */ protected String studentAge; /** *学生性别 */ protected String studentGender;

    /**

    • List集合存储学生信息 属于学生类 */ protected static List<Student> studentList = new ArrayList<>();

    /**

    • 实例化学生对象 */ public Student(){

    }

    /**

    • 实例化学生对象 本例中主要用于完成添加学生功能

    • @param studentId

    • @param studentName

    • @param studentAge

    • @param studentGender */ public Student(int studentId,String studentName,String studentAge,String studentGender){ this.studentId = studentId; this.studentName = studentName; this.studentAge = studentAge; this.studentGender = studentGender; }

    /**

    • 添加学生

    • @return */ public boolean add(){ studentList.add(this); return true; }

    /**

    • 删除指定的学生对象

    • @param student

    • @return */ public boolean remove(Student student){ if(student ==null){ return false; } for (int i = 0;i<studentList.size();i++){ if(studentList.get(i).studentId == student.studentId) { studentList.remove(i); } } return true; }

    /**

    • 修改指定的学生对象

    • @param student

    • @return */ public boolean set(Student student){ if(student ==null){ return false; } for (int i = 0;i<studentList.size();i++){ if(studentList.get(i).studentId == student.studentId) { studentList.get(i).studentName = student.studentName; studentList.get(i).studentAge = student.studentAge; studentList.get(i).studentGender = student.studentGender; } } return true; }

    /**

    • 显示所有的学生信息 */ public void find(){ for (int i = 0;i<studentList.size();i++){ System.out.println(studentList.get(i).studentId+","+studentList.get(i).studentName+","+studentList.get(i).studentAge+","+studentList.get(i).studentGender); } } }

/**

  • 测试类 */ public class Test { public static void main(String[] args) { int flag = 1; while (flag == 1){ Scanner scanner = new Scanner(System.in); System.out.println("----------------------"); System.out.println("-----1.添加学生-----"); System.out.println("-----2.删除学生-----"); System.out.println("-----3.修改学生-----"); System.out.println("-----4.查找学生-----"); System.out.println("----------------------"); System.out.println("----请输入对应的操作编号----"); int operationNum = scanner.nextInt(); switch(operationNum) { case 1: System.out.println("请输入学生信息:"); System.out.println("学生编号:"); int studentId = scanner.nextInt(); System.out.println("学生姓名:"); String studentName = scanner.next(); System.out.println("学生年龄:"); String studentAge = scanner.next(); System.out.println("学生性别:"); String studentGender = scanner.next(); Student student = new Student(studentId,studentName,studentAge,studentGender); if(student.add()){ System.out.println("学生添加成功!"); }else{ System.out.println("学生添加失败!"); } break; case 2: System.out.println("请输入要删除的学生编号:"); int studentId1 = scanner.nextInt(); Student student1 = new Student(); student1.studentId = studentId1; if(student1.remove(student1)){ System.out.println("学生信息删除成功!"); }else{ System.out.println("学生信息删除失败!"); } break; case 3: System.out.println("请输入要修改的学生编号:"); int studentId2 = scanner.nextInt(); System.out.println("请输入修改的学生信息:"); System.out.println("学生姓名:"); String studentName2 = scanner.next(); System.out.println("学生年龄:"); String studentAge2 = scanner.next(); System.out.println("学生性别:"); String studentGender2 = scanner.next(); Student student2 = new Student(); student2.studentId = studentId2; student2.studentName = studentName2; student2.studentAge = studentAge2; student2.studentGender = studentGender2; if(student2.set(student2)){ System.out.println("学生信息修改成功!"); }else{ System.out.println("学生信息修改失败!"); } break; case 4: System.out.println("所有学生信息如下:"); Student student3 = new Student(); student3.find(); break; default: System.out.println("无对应的操作编号!"); break; } System.out.println("输入0退出操作"); System.out.println("输入1继续操作"); flag = scanner.nextInt(); } } }

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

好教员好

您的鼓励是我前进动力!

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

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

打赏作者

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

抵扣说明:

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

余额充值