A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小石姐姐 于 2018-11-21 09:34 编辑

List 接口的特点:
它是一个元素存取有序的集合。例如,存取元素顺序书11,22,33,那么集合中,元素的存储就是按照11,22,33的顺序完成的。
他是一个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组是一个道理
集合中可以有重复的元素,通过元素的equals方法,来比较是否为重复的元素。

hashcode 和equals方法 练习。
HashSet去掉重复元素的原理
1.调用被添加元素的hashcode(),和HashSet中已有元素的hashCode比较是否有相同
如果不相同直接存储。 如果相同,调用equals方法比较是否相同
不相同直接存储元素,相同,认为是同一元素,不存储。

数据结构
常见的数据结构中,元素存取特点。
栈:stack,又称堆栈,对元素的存取特点是:先进后出。 最先存进去的元素要最后出来

队列:先进先出queue 。简称队

数组:Array,是有序的元素存取序列,对元素的存取特点是:
查找元素快,增删慢。
查找元素快:
通过索引,可以快速访问制定位置的元素
增删慢:
指定索引位置增加元素:需要创建一个心数组,将指定新元素,存储在制定索引位置
,再把数组元素根据索引,复制到心数组对应索引的位置。
制定索引位置删除元素,需要创建一个新的数组,把原数组元素根据索引,赋值到心数组对应索引位置,原数组中指定索引位置元素不复制到新数组中。

链表:linkedlist,对元素存取有以下特点
链表的链接方式 如同手拉手一般,多个节点之间,通过地址进行连接。
特点是:查找元素慢,增删元素快,想要查找元素需要通过节点的链接,一次向后查找制定元素。
增删快,直接切断两个链接节点之间的线段(地址)即可。



LinkedList方法的使用
基本方法:add,set,get,remove,clear,size等发方法
特有方法:addFirst,addLast,getFirst,getLast,removeFirst,removeLast,push,pop,clear
等方法
创建LinkedList集合
LinkedLIst<String>arr = new LinkedLIst<String>();
arr.add(“添加元素1”)
arr.add(“添加元素2”)
arr.add(“添加元素”3)
arr.add(“添加元素4”)
arr.add(2,"制定位置增加元素2");
arr,set(3,”指定位置修改元素")
增强for循环遍历获取集合内容
for (String str : arr) { System.out.println(str);
        }
获取指定位置元素索引
System.out.println(arr.get(1));
使用size方法获取集合大小
System.out.println(arr.size());
使用remove方法删除指定元素索引
arr.remove(3);
一、定义人类,包含姓名和年龄属性。创建4个人存储到HashSet中,姓名和年龄相同的人看做同一人不存储。
// 1.定义Person.包好姓名年龄属性,重写hashCode()equals()方法
[Java] 纯文本查看 复制代码
public class Person {
    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {
if (this == o) return true;
        if (!(o instanceof Person)) return false;

        Person person = (Person) o;

        if (age != person.age) return false;
        return name != null ? name.equals(person.name) : person.name == null;
    }

    @Override
    public int hashCode() {
        int result = name != null ? name.hashCode() : 0;
        result = 31 * result + age;
        return result;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}


测试类:
[Java] 纯文本查看 复制代码
public class HashSetTest01 {
    public static void main(String[] args) {
        // 2.创建HashSet用于存储Person类型
        HashSet<Person> hashSet = new HashSet<Person>();

        // 3.添加多个Person到HashSet中
        hashSet.add(new Person("王昭君", 21));
        hashSet.add(new Person("西施", 21));
        hashSet.add(new Person("杨玉环", 20));
        hashSet.add(new Person("貂蝉", 19));
        hashSet.add(new Person("杨玉环", 20));
        hashSet.add(new Person("貂蝉", 19));


      
[Java] 纯文本查看 复制代码
 // 4.遍历获取HashSet中的内容
        for (Person p : hashSet) {
            System.out.println(p);
        }
    }
}



Collections 工具类的使用day03:



一、ArrayList集合中有如下内容: {33,11,77,55},使用Collections.sort()ArrayList集合中的数据进行排序,并打印出排序后的结果。

[Java] 纯文本查看 复制代码
public class CollectionsTest01 {
    public static void main(String[] args) {
        // 1.创建ArrayList
        ArrayList<Integer> arr = new ArrayList<Integer>();

        // 2.使用add方法添加{33,11,77,55}四个元素
        arr.add(33);
        arr.add(11);
        arr.add(77);
        arr.add(55);
[font=SimSun, STSong][size=16px] // 3.调用Collections的sort方法,对集合排序[/size][/font]
[font=SimSun, STSong][size=16px]        Collections.sort(arr);[/size][/font]

[font=SimSun, STSong][size=16px]        // 4.使用增强for遍历ArrayList集合[/size][/font]
[font=SimSun, STSong][size=16px]        for (Integer integer : arr) {[/size][/font]
[font=SimSun, STSong][size=16px]            System.out.println(integer);[/size][/font]
[font=SimSun, STSong][size=16px]        }[/size][/font]
[font=SimSun, STSong][size=16px]    }[/size][/font]
[font=SimSun, STSong][size=16px]}[/size][/font]


      
Map,Entry简介04day
一、请简述Map 的特点。
Map每个元素由键与值两个部分组成
Map键不能重复,每个键对应一个值。
键和值可以为null
二、说出Entry键值对对象遍历Map集合的原理。
Map中存放的是两种对象,一种为key(键)一种为value(值)
是一一对应关系,这一对对象又乘坐Map中的一个Entry项。Entry将键值对对应关系封装成了对象。即键值对对象,这样我们在遍历Map集合时,就可以从每一个键值对(Entry)对象中获取对应的键与对应的值。
三、请使用Map集合的方法完成添加元素,根据键删除,以及根据键获取值操作。
[Java] 纯文本查看 复制代码
public class MapTest01{
public static void main(String[] args) {
// 1.创建HashMap
HashMap<String, String> hm = new HashMap<String, String>();

// 2.使用put添加元素
hm.put("黄晓明", "Baby");
        hm.put("邓超", "孙俪");
        hm.put("李晨", "范冰冰");
        hm.put("大黑牛", "范冰冰");

// 3.使用put修改元素
String v1 = hm.put("李晨", "白百合");

// 4.使用get获取元素
String string = hm.get("大黑牛");

// 5.使用remove删除元素
String v2 = hm.remove("大黑牛");
        System.out.println(v2);

// 6.打印集合中的元素
System.out.println(hm);
    }



05day异常,多线程
今日内容:

异常
概念, 分类
在方法内产生异常:
throw 异常对象;
2种处理异常的方式:
在方法声明上, throws 声明抛出, 交给方法调用者处理
在方法内, try-catch-finally 捕获并直接处理
自定义异常类: 描述特殊场景的问题
多线程
概念:
并发, 并行
进程, 线程
多线程的第一种实现方式

1.请描述异常的继承体系:
2.请描述你对错误(Error)的理解:
3.请描述你对异常(Expection的理解):
4.请描述你对运行时异常(RuntimeException)的理解:

1.异常继承体系为:异常的根类是 java.lang.Throwable,其下有两个子类:
java.lang.Error 与 java.util.Exception 。而Exception又分为编译时期异常:checked异常,与运行时期异常:runtime异常。
2.Error:表示不可修复的恶性的错误,只能通过修改代码规避错误的产生,通常是系统级别的,所以很严重。
3.Exception:表示可修复的良性(相对于错误)的异常,异常产生后程序员可以并且应该通过代码的方式纠正,使程序继续运行,是必须要处理的。
4.运行时期异常:runtime异常。在运行时期,检查异常.在编译时期,运行异常不会编译器检测(不报错)。












2 个回复

倒序浏览
好,写的挺不错
回复 使用道具 举报
好,写的很不错
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马