集合小结
来源:互联网 发布:seo推广学院 编辑:程序博客网 时间:2024/05/20 14:19
import java.util.HashSet;
import java.util.Set;
/**
*
集合:存储对象数据的集合容器 单例集合: ---------|Collection
*单例集合的根接口
* ------------|List 有序,可重复
* ----------------|ArrayList 底层是利用Object数组实现的,特点:查询数据快,增删慢(原因是内存连续)
* ----------------|LinkedList 底层使用的链表数据实现的,具有查询慢,增删快;
* ----------------|Vactor 底层也是Object数据实现的,类似于ArrayList,但是Vactor是线程安全的,缺点是操作效率低
* ------------|Set 如果是实现了Set接口的集合类,具备的特点是无序,不允许重复
* ----------------|HashSet 底层是使用的是Hash表实现的,特点是存取速度快;
* HashSet存储数据的原理是:往HashSet里面存值得时候会先调用元素的hashCode方法得到元素的哈希码值,通过哈希码值计算出在哈希表中的位置
* 1、如果该位置上没有元素,直接将该元素添加到该位置的哈希表中;
* 2、如果该位置含有其他元素,则调用该元素的equals方法,如果返回值是false,则该元素被添加
* 3、如果该位置含有其他元素,则调用该元素的equals方法,如果返回值是true,则表示元素重复,不允许被添加;
*-----------------TreeSet 底层使用的是红黑树(二叉树),特点是对集合中的元素进行排序存储;
*------------|双列集合 Map(key不可以重复,value可以重复)
*---------------|HashMap:底层是通过哈希表实现的;
*---------------|TreeMap:底层是通过红黑树实现的;
*---------------|HashTable 类似于HashMap,但是是线程安全的;
*
*
*/
class Person{
private String name;
private int age;
public Person(int age,String name){
this.name = name;
this.age = age;
}
@Override
public int hashCode() {//得到hashCode的方法,不再进行计算,直接将固定的值付给Hash即可
return this.age;
}
@Override
public String toString() {
return "姓名:"+name+",年龄:"+age;
}
@Override
public boolean equals(Object obj) {
Person p = (Person) obj;
return this.age ==p.age;
}
}
public class Demo1 {
public static void main(String[] args) {
Set<Person> set = new HashSet();
set.add(new Person(1,"张三"));
set.add(new Person(1,"张三"));
System.out.println(set);
}
}
package test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class Demo2 {
public static void main(String[] args) {
// 对集合list的操作 使用的是for循环;
List<String> list = new ArrayList();
list.add("张三");
list.add("李四");
list.add("王五");
list.add(1, "赵六");
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i));
}
System.out.println("集合长度:" + list.size());
System.out.println("集合的第二个元素:" + list.get(2));
System.out.println("输入全部的集合:" + list);
list.remove(0);
System.out.println("输入删除第一个元素之后的集合:" + list);
list.remove("王五");
System.out.println("输入删除王五之后的集合:" + list);
System.out.println(list.contains("赵六"));
System.out.println(list.indexOf("赵六"));
list.set(0, "李娜娜");
System.out.println(list);
list.clear();
System.out.println(list);
// 使用迭代器
Set<String> set = new HashSet<String>();
set.add("张三");
set.add("李四");
set.add("王五");
Iterator<String> it = set.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
// 增强for循环,底层就是使用的迭代器实现的
for (String i : set) {
System.out.println(i);
}
// Map
Map<String, String> map = new HashMap();
map.put("张三", "001");
map.put("李四", "002");
map.put("王五", "003");
map.put("赵六", "004");
Set<Entry<String, String>> entrySet = map.entrySet();
for (Entry e : entrySet) {
System.out.println(e.getKey() + " " + e.getValue());
}
}
}
- 集合小结
- 集合小结
- 集合小结
- 集合小结
- 集合小结
- 集合小结
- 集合小结
- 集合小结
- JAVA集合小结
- Java 集合框架小结
- java 集合 框架小结
- Request.ServerVariables集合小结
- java集合小结
- 【学习心得】集合小结
- JAVA集合小结
- JAVA集合小结
- C#集合小结
- JAVA集合小结
- 用单片机实现 websever 网页服务器功能
- KMP算法
- 我在兄弟连学python(2)-----关于返回值
- 爬虫实践练习(爬小说)
- 验证
- 集合小结
- IIS发表
- java--Demo1
- javaweb学习路线
- ARMv8-a架构简介
- 验证信息添加到表格中
- C# 字典 dictionary
- Memcached 在linux与windows下的安装
- IIC读取AT24C256数据出现的问题及解析