JAVA实训第一天

目录

集合是什么?

集合框架:

 概念填空题

概念判断题

选择题

 代码实例

ArrayListDemo

ArrayListDemo2的反向输出

 TreeSetDemo

 HashMapDemo

 作业

使用ArrayList集合,对其添加10个不同的元素,并使用Iterator遍历该集合。

2.使用迭代(即循环)的方式 进行屏幕输入字符或数字,输入内容保存在 ArrayList中,

直到输入#end结束输入,将ArrayList中的内容迭代输出,2种方式,

要求1  输入的内容不能重复,如果ArrayList已经包含输入的内容,

提示“已经包含,请继续输入:”。

 3.使用HashMap实现统计一个字符串中每个字符出现的次数(每个字符作为键,它出现的次数作为值>该题不允许使用String类的方法(除了toCharArrayO)


集合是什么?

集合框架:

底层主要实现数据结构算法----》java方法(功能)、方法使用(增删改查)。

结合框架包含:

 概念填空题

数组: 数据类型[]…..

集合:存储Object—任意数据类型的元素

1、JDK中提供了一系列可以存储任意对象的类,统称为 ___集合_______    

2、在创建TreeSet对象时,可以传入自定义的比较器,自定义比较器需要实现  Comparator __。

3、Collection有两个子接口分别是List和Set,List集合的特点是  有序可重复    ,Set集合的特点是   无序  不可重复  

4、使用Iterator遍历集合时,首先需要调用  hasNext()    方法判断是否存在下一个元素,若存在下一个元素,则调用  next()    方法取出该元素。

5、集合按照存储结构的不同可分为单列集合和双列集合,单列集合的根接口是   Collection   ,双列集合的根接口是   Map  

6、Map集合中的元素都是成对出现的,并且都是以   key      value   的映射关系存在。

7List集合的主要实现类有 ArrayList       LinkedList    ,Set集合的主要实现类有   HashSet      TreeSet   Map集合的主要实现类有   HashMap      TreeMap  

8、Map集合中存储元素需要调用  put    方法,要想根据该集合的键获取对应的值需要调用   map.get(key)_____  方法。

9java.util包中提供了一个专门用来操作集合的工具类,这个类是 Collections     ,还提供了一个专门用于操作数组的工具类,这个类是   ____Arrays___  

 

概念判断题

1、Set集合是通过键值对的方式来存储对象的。 错误

2、集合中不能存放基本数据类型,而只能存放引用数据类型。正确

3、如果创建的TreeSet集合中没有传入比较器,则该集合中存入的元素需要实现Comparable接口。正确

4、使用Iterator迭代集合元素时,可以调用集合对象的方法增删元素。错误(正在使用时不能调用)

5、LinkedList在内部维护了一个双向循环链表,每一个元素节点都包含前一个元素节点和后一个元素节点的引用。正确

选择题

        1、要想保存具有映射关系的数据,可以使用以下哪些集合?(多选)

A、ArrayList    BTreeMap    CHashMap    D、TreeSet

        2、Java语言中,集合类都位于哪个包中?

Ajava.util    B、java.lang    C、java.array    D、java.collections

        3、使用Iterator时,判断是否存在下一个元素可以使用以下哪个方法?

A、next()    B、hash()    C、hasPrevious()     D、hasNext()

        4、关于foreach循环的特点,以下说法哪些是正确的?(多选)

Aforeach循环在遍历集合时,无需获得容器的长度

Bforeach循环在遍历集合时,无需循环条件,也无需迭代语句

C、foreach循环在遍历集合时非常繁琐

Dforeach循环的语法格式为:for(容器中元素类型 临时变量 :容器变量)

        5、在程序开发中,经常会使用以下哪个类来存储程序中所需的配置?

 A、HashMap    B、TreeSet    C、Properties    D、TreeMap

        6、使用Enumeration遍历集合时,需要使用以下哪些方法?(多选)

 A、hasMoreElements()    B、nextElement()    C、next()    D、hashNext()

Vector vector = new Vector();
 
vector.add(1);
 
vector.add(2);
 
vector.add(3);
Enumeration elements = vector.elements();

while (elements.hasMoreElements()) {
   
Object element = elements.nextElement();
   
System.out.println(element);
}

      7、要想集合中保存的元素没有重复并且按照一定的顺序排列,可以使用以下哪个集合?

A、LinkedList   B、 ArrayList     C、hashSet   D、TreeSet

      8、下列哪些说法是正确的?(多选)

ALinkedList集合在增删元素时效率较高      

B、ArrayList集合在查询元素时效率较高

C、HashMap不允许出现一对null键null值   

D、HashSet集合中元素可重复并且无序

      9、以下哪些方法是LinkedList集合中定义的?(多选)

 A、getLast()    B、getFirst()    C、remove (int index)    D、next() 

     10、获取单列集合中元素的个数可以使用以下哪个方法?

A、length()    Bsize()    C、get(int index)    D、add(Object obj)

 代码实例

ArrayListDemo

import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Vector;

/**
 * @date : 2022/11/21 10:19
 */
public class ArrayListDemo {

    public static void main(String[] args) {
        ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("a");
        arrayList.add("b");
        arrayList.add("c");
//        arrayList.add(66);
//        有序 可重复
        String first = arrayList.get(0);
        System.out.println("first:"+first);

        String last = arrayList.get(2);
        System.out.println("last:"+last);


//        获取arrayList容器中  元素的个数
        int size = arrayList.size();
        System.out.println(size);

        System.out.println("========================");
//        遍历输出集合容器arrayList中的每个元素
//        1)index 0 开始----》arrayList.size()-1
        for (int i = 0; i <=arrayList.size()-1; i++) {
            String ele = arrayList.get(i);
            System.out.println("ele:"+ele);
        }


        System.out.println("========================");
//        2) foreach增强型循环---代码简洁
       /* for(String element:arrayList){
            System.out.println("element:"+element);
        }*/


//        3)lamda表达式 后面详细讲到
        arrayList.forEach(element-> System.out.println(element));


//        4)Iterator迭代器遍历循环
        Iterator<String> its = arrayList.iterator();
//        使用Iterator遍历集合时,首先需要调用 hasNext() 方法判断是否存在下一个元素,
//        若存在下一个元素,则调用 next() 方法取出该元素。
        while (its.hasNext()) {
            String element = its.next();
            System.out.println("element:"+element);
        }


        ArrayList arrayList1 = new ArrayList();
        arrayList1.add("hello");
        arrayList1.add(12);
//        object是String的上转型,在这里可以代替String类型
        for(Object ele:arrayList1){
            System.out.println("ele:"+ele);

        }

        /*for(String ele:arrayList1){
            System.out.println("ele:"+ele);

        }*/

//=================================================
//        使用Enumeration遍历集合
        //vector是一个动态数组,可以根据需要动态伸缩
        Vector vector = new Vector();
         vector.add(1);
         vector.add(2);
         vector.add(3);
        Enumeration elements = vector.elements();

        while (elements.hasMoreElements()) {
            Object element = elements.nextElement();
            System.out.println(element);
        }


    }
}

结果 

 

ArrayListDemo2的反向输出

import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;

/**
 * 反向输出
 * @date : 2022/11/21 10:44
 */
public class ArrayListDemo2 {

    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add("demo_1");
        list.add("demo_2");
        list.add("demo_3");

//        Iterator its = list.iterator();
//        its.hasNext();
//        its.next();



        ListIterator it = list.listIterator();
        while (it.hasNext()) {
            it.next();
        }

        while(it.hasPrevious()) {
            Object obj = it.previous();
            System.out.print(obj+" ");
        }
    }

}

结果 

 TreeSetDemo

import java.util.Comparator;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

/**
 *
 * @date : 2022/11/21 9:42
 */
public class TreeSetDemo {


    public static void main(String[] args) {

//        Set set = new TreeSet();

//        TreeSet:默认升序机制
        //里面类型要一样
        TreeSet treeSet = new TreeSet();
        treeSet.add(10);
        treeSet.add(30);
        treeSet.add(20);
        treeSet.add(1);
//        treeSet.add("hello");

        System.out.println(treeSet);
        System.out.println("===TreeSet降序==================");

//        TreeSet 存放都是Integer类型数据
        TreeSet<Integer> treeSet2 = new TreeSet<>(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                //用到插入排序,红黑树
                return o2.compareTo(o1);
            }
        });


        treeSet2.add(10);
        treeSet2.add(30);
        treeSet2.add(20);
        treeSet2.add(1);


        System.out.println(treeSet2);




        System.out.println("===TreeSet元素遍历==================");
        TreeSet ts = new TreeSet();
        ts.add("b");
        ts.add("a");
        //唯一性
        ts.add("c");
        ts.add("c");

        Iterator it = ts.iterator();
        while (it.hasNext()) {
            Object element = it.next();
            System.out.println("element:"+element);
        }


    }



}

 结果

 HashMapDemo

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 *
 * @date : 2022/11/21 10:50
 */
public class HashMapDemo {
    public static void main(String[] args) {

//        使用泛型 <Integer,String>--规范存储数据得数据类型
//        学号--姓名
        Map<Integer,String> map = new HashMap<>();
        map.put(100,"CQQ");
        map.put(103,"tidy");
        map.put(102,"tidy2");

//        map存储元素特点: key不可重复  无序

//        根据key 102 修改对应的value值,重复放入会进行覆盖
        map.put(102,"tidy66");

//        根据key---获取对应的value值
        String value = map.get(103);
        System.out.println("value:"+value);

        System.out.println("=======================");
//        遍历输出每一对key和value??
//        1)遍历方式1
        Set<Integer> keys = map.keySet();
        for(Integer key:keys){
            String val = map.get(key);
            System.out.println(key+"==============="+val);
        }





//        2)遍历方式2
//        Map.Entry<Integer, String>将键值封装再一起
        Set<Map.Entry<Integer, String>> entries = map.entrySet();
        for(Map.Entry<Integer, String> entry :entries){
            System.out.println(entry.getKey()+"=============="+entry.getValue());

        }


        System.out.println("删除操作。。。。。。。。。。");
        Map<Integer,String> map2 = new HashMap<>();
        map2.put(100,"CQQ");
        map2.put(103,"tidy");
        map2.put(102,"tidy2");

        map2.remove(103);
        int size = map2.size();
        System.out.println("size:"+size);

        Set<Map.Entry<Integer, String>> entries2 = map2.entrySet();
        for(Map.Entry<Integer, String> entry :entries2){
            System.out.println(entry.getKey()+"=============="+entry.getValue());
        }
        System.out.println("删除操作。。。。。。。。。。。");
//    删除事项
//        遍历map中元素 如果key是100  删除掉
        /*for(Map.Entry<Integer, String> entry :map2.entrySet()){
//            System.out.println(entry.getKey()+"=============="+entry.getValue());
            if (entry.getKey().equals(100)){
                map2.remove(entry.getKey());
            }
        }*/


        boolean flg = false;
        for(Map.Entry<Integer, String> entry :entries2){
//            System.out.println(entry.getKey()+"=============="+entry.getValue());
            if (entry.getKey().equals(100)){
                flg=true;
//                如果找到100key 跳出循环
                break;
            }
        }

//        flg=true找到这个元素
        if(flg){
            map2.remove(100);
        }

        Set<Map.Entry<Integer, String>> entries1 = map2.entrySet();
        for(Map.Entry<Integer, String> entry :entries1) {
            System.out.println(entry.getKey()+"============="+entry.getValue());

        }


    }
}

结果

 作业

  1. 使用ArrayList集合,对其添加10个不同的元素,并使用Iterator遍历该集合。

提示:

1)使用add()方法将元素添加到ArrayList集合中。

2)调用集合的iterator()方法获得Iterator对象,并调用Iterator的hasNext()和next()方法,迭代出

集合中的所有元素。

import java.util.*;

public class test1 {
    public static void main(String[] args) {
        ArrayList arrayList = new ArrayList();
        arrayList.add(1);
        arrayList.add(2);
        arrayList.add(3);
        arrayList.add(4);
        arrayList.add(5.2);
        arrayList.add(6);
        arrayList.add(7);
        arrayList.add(8);
        arrayList.add(9);
        arrayList.add("10");

        Iterator it = arrayList.iterator();
        while (it.hasNext()){
            System.out.println(it.next());
        }

    }
}

 结果 

 

2.使用迭代(即循环)的方式 进行屏幕输入字符或数字,输入内容保存在 ArrayList中,

直到输入#end结束输入,将ArrayList中的内容迭代输出,2种方式,

要求1  输入的内容不能重复,如果ArrayList已经包含输入的内容,

提示“已经包含,请继续输入:”。

 

import java.util.*;

public class test2 {
    public static void main(String[] args) {
        ArrayList<String> arrayList = new ArrayList<>();
        String str ;
        Scanner sc = new Scanner(System.in);
        while (true){
            System.out.println("请输入:");
            str = sc.nextLine();
            if (str.equals("#end"))
                break;
                if (arrayList.contains(str)){
                    System.out.println("已经包含,请继续输入:");
                }
                else {
                    arrayList.add(str);
                }
        }
    }
}

 结果 

 3.使用HashMap实现统计一个字符串中每个字符出现的次数(每个字符作为键,它出现的次数作为值>
该题不允许使用String类的方法(除了toCharArrayO)

import java.util.*;

public class test21 {
    public static void main(String[] args) {
        HashMap<Character,Integer> hashMap = new HashMap<>();
        char[] s = new char[10];
        String str ;
        Scanner sc = new Scanner(System.in);
        str = sc.nextLine();
        //toCharArray()将字符串里每个字符分开存入数组
        s = str.toCharArray();
//        System.out.println(s);
        for(char cha : s){
            hashMap.put(cha,hashMap.containsKey(cha)?hashMap.get(cha)+1:1);
        }
//        System.out.println(hashMap);
        Set keySet = hashMap.keySet();
        Iterator it = keySet.iterator();
        while (it.hasNext()){
            Object m = it.next();
            System.out.println(m+":"+hashMap.get(m));
        }
//        for (String key:hashMap.keySet()){
//            System.out.println(key+":"+hashMap.get(key));
//        }

    }
}

 结果

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值