1、java集合package cn.itcast.list;import java.util.HashSet;import javax.print.attribute.HashAttributeSet;/*集合: 存储对象数据 的集合容器。单例集合-| Collection 单例集合 的根接口-| List 如果是实现了List接口的集合类,具备的特点: 有序,可重复。-| ArrayList ArrayList底层是使用了Object数组实现 的。 特点: 查询速度快,增删慢。-| LinkedList LinkedList底层是使用了链表数据结构实现的。特点: 查询速度慢,增删快-| Vec
2、tor 底层是使用了Object数组实现 的, 实现原理与ArrayList 是一致的,但是是线程安全的,操作效率低。-| Set 如果是实现了Set接口的集合类,具备的特点: 无序,不可重复。-| HashSet 底层是使用了哈希表实现 的。 特点: 存取速度快。HashSet存储元素的原理: 往hashSet添加元素的时候,首先会调用元素的hashCode方法得到元素的哈希码值,然后把哈希码值经过运算算出该元素存在哈希表中的位置。 情况1:如果算出的位置目前还没有存在任何的元素,那么该元素可以直接添加到哈希表中。 情况2: 如果算出的位置目前已经存在其他的元素,那么还会调用元素 的equa
3、ls方法再与这个位置上 的元素比较一次。 如果equals方法返回的是true,那么该元素被视为重复元素,不允许添加。如果equals方法返回 的是false,那么该元素也可以被添加。-| TreeSet 底层是使用了红黑树(二叉树)数据结构实现的。 特点: 对集合中的元素进行排序存储、。TreeSet要注意的事项: 1. 往TreeSet添加元素 的时候,如果元素具备自然顺序的特点,那么TreeSet会根据元素 的自然顺序特性进行排序 存储。 2. 往TreeSet添加元素 的时候,如果元素不具备自然顺序的特点,那么元素所属的类就必须要实现Comparable接口,把比较的规则定义在Comp
4、areTo方法上。 3. 往TreeSet添加元素 的时候,如果元素不具备自然顺序的特点,那么元素所属的类就也没有实现Comparable接口,那么在创建TreeSet对象的时候必须要传入比较器对象。 比较器 的定义格式: class 类名 implements Comparator 双列集合 -| Map 存储的数据都是以键值对的形式存在的,键可以不重复,值可重复。 -| HashMap 底层也是使用了哈希表实现的。 -| TreeMap 底层也是使用了红黑树数据结构实现的。 练习: */class Person int id; String name; public Person(int
5、id, String name) super(); this.id = id; this.name = name; Override public int hashCode() return this.id; Override public boolean equals(Object obj) Person p = (Person)obj; return this.id = p.id; Override public String toString() return 编号:+ this.id + 姓名: + this.name; public class Demo1 public static
6、 void main(String args) HashSet set = new HashSet(); set.add(new Person(110,狗娃); set.add(new Person(110,狗娃); System.out.println(集合的元素:+ set); 输出集合的元素:编号:110 姓名: 狗娃 遍历输出Demo2 package cn.itcast.list;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;
7、import java.util.Map.Entry;import java.util.Set;public class Demo2 public static void main(String args) ArrayList list =new ArrayList(); /使用get方法遍历。 list.add(张三); list.add(李四); list.add(王五); System.out.println(=get方式遍历=); for(int i = 0 ; i list.size() ; i+) System.out.print(list.get(i)+,); /使用迭代器 注意
8、: 迭代器在迭代的 过程中不能使用集合对象修改集合中的元素个数。如果需要修改要使用迭代器的方法进行修改, System.out.println(rn=迭代器方式遍历=); HashSet set = new HashSet(); set.add(狗娃); set.add(狗剩); set.add(铁蛋); /*Iterator it = set.iterator(); /获取到迭代器 while(it.hasNext() System.out.print(it.next()+,); */ for(String item : set) System.out.print(item+,); Syst
9、em.out.println(rn=entrySet方式遍历=); HashMap map = new HashMap(); map.put(张三,001); map.put(李四,002); map.put(王五,003); SetEntry entrys = map.entrySet(); / for (Entry entry : entrys) System.out.println(键:+entry.getKey()+ 值:+entry.getValue(); =get方式遍历=张三,李四,王五,=迭代器方式遍历=狗娃,铁蛋,狗剩,=entrySet方式遍历=键:李四 值:002键:张三
10、 值:001键:王五 值:003配置文件路径package cn.itcast.path;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.io.InputStream;import java.util.Properties;/* 如果经常会发生变化的数据我们可以定义在配置文件上。 比如说:数据库的用户名与密码。 配置文件的路径应该如何写 呢? 绝对路径:一个文件的完整路径信息。一般绝对路径是包含有盘符
11、 的。 绝对路径的缺陷: 因为绝对路径是有盘符开头的,有些系统是没有盘符的。 相对路径: 相对路径是相对于当前程序的路径。当前路径就是执行java命令的时候,控制台所在的路径。 类文件路径 :类文件路径就是使用了classpath的路径找对应的资源文件。 如果需要使用到类文件路径首先先要获取到一个Class对象。 */public class DBUtil static Properties properties ; static try properties = new Properties(); /去加载配置文件 / Class clazz = DBUtil.class; InputStr
12、eam inputStream = clazz.getResourceAsStream(/db.properties); / /代表了Classpath的路径。 getResourceAsStream 该方法里面使用的路径就是使用了类文件路径。 properties.load(inputStream); catch (IOException e) / TODO Auto-generated catch block e.printStackTrace(); public static void main(String args) System.out.println(当前路径:+ new Fil
13、e(.).getAbsolutePath() ); System.out.println(用户名:+ properties.getProperty(userName)+ 密码:+properties.getProperty(password); 硬编码package cn.itcast.path;/* 以后的数据库的用户名与密码一般都会 保存到properties(配置文件) */public class Demo1 /硬编码 static String userName = root; static String password = 123; public static void main(String args) System.out.println(用户名:+ userName+ 密码:+password); 输出用户名:root 密码:123
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1