HashSet,TreeSet,HashMap,一对一,一对多
来源:互联网 发布:java.swing包 编辑:程序博客网 时间:2024/05/16 18:41
一、Set:就是袋子里数据不重复
1、 Set和Collection有同样的接口,the Set is exactly a Collection,但是有不同的行为
这就是继承(子类和父类属于同一种类型)和多态的的思想(同一接口,实现不同的功能)
1>HashSet :存储方法采用 hashing function,能够快速查找。
2>TreeSet:keeps elements sorted into a red-black tree data structue,
存储方法采用红黑树的结构,输出的结果排序(int 1,2,3...),
3>LinkedHashSet:also uses hashing for lookup speed, but appears to maintain elements in
insertion order using a linked list.
存储方法采用 hashing function,但是保持插入的顺序。
2、打开,读一个文件到Set,然后利用分隔符分开形成数组,主要的目的希望输出的数据不重复。
\\W+:表示分割符号可以不是(a--z A--z - 0--9),即分割符只要不含字母,数子,下划线,全部当成分割符号,
这样分割符号是\n,逗号,空格等等 ,
1>lexicographically:字母顺序,默认是区分大小写(ABC....Z abc.....)
package holding;import java.util.Set;
import java.util.TreeSet;
import net.mindview.util.TextFile;
public class UniqueWords {
public static void main(String[] args) {
Set<String> words = new TreeSet<String>(new TextFile("src\\holding\\SetOperations.java", "\\W+"));
Set<String> words1 = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);
words1.addAll(new TextFile("src\\holding\\SetOperations.java", "\\W+"));
System.out.println(words);
System.out.print(words1);
}
} //
//输出1: Output:
[A, B, C, Collections, D, E, F, G, H, HashSet, I, J, K, L, M, N, Output,
Print, Set, SetOperations, String, X, Y, Z, add,
//输出2:
[A, add, addAll, added, args, B, C, class, Collections, contains,
containsAll, D, E, F, false, from,
二、Map:一对一对存。
1、存《字符串,int 》对
简单例子:1》一家饮料店,想统计早上高峰期2个小时内,各个年龄段的人数
2》当打印小票时,就调用统计方法。
package holding;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
//方法参数
public class Statistics {
public static void StaPerCount(String person,Map<String,Integer> t )
{
Integer personc=t.get(person);
t.put(person, personc==null?1:personc+1);
}
public static void main(String[] args)
{
Map<String,Integer> m=new HashMap<String,Integer>();
StaPerCount("老人50-60",m);
StaPerCount("女小孩10-15",m);
StaPerCount("男小孩15-18",m);
StaPerCount("女18-23",m);
StaPerCount("女18-23",m);
StaPerCount("女18-23",m);
System.out.println(m);
}
}
2、存《字符串,对象 》对
Here’s an example that allows you to use a String description to look up Pet objects
package holding;
import typeinfo.pets.*;
import java.util.*;
import static net.mindview.util.Print.*;
public class PetMap {
public static void main(String[] args) {
Map<String, Pet> petMap = new HashMap<String, Pet>();
petMap.put("My Cat", new Cat("Molly"));
petMap.put("My Dog", new Dog("Ginger"));
petMap.put("My Hamster", new Hamster("Bosco"));
print(petMap);
Pet dog = petMap.get("My Dog");
print(dog);
print(petMap.containsKey("My Dog"));
print(petMap.containsValue(dog));
}
}
/* Output:
{My Cat=Cat Molly, My Hamster=Hamster Bosco, My Dog=Dog Ginger}
Dog Ginger
true
true3、存对象--List(容器) 对
key=对象
values=容器或另一个Maps.
3.1 初始化问题:类变量存在类的常量池中,当类编译成.class 出现,但是编译器也不知道这些数据实际内存地址,只是弄一个假符号代替,
当这个类被用时(new、或者他的实例变量调用方法时),才为类变量分配真正的内存地址,这样常量池中假符号被真正的内 存地址代替,而且一个类的常量池谁都可以用,这个涉及到访问冲突问题,在线程中继续解释。
1》类MapOfList 有一个静态(类)变量:是一个实例变量 petPeople,可以和其它对象Map相连接。
当用petPeople调用Map的方法时,这个keySet时,类MapOfList 进行初始化,表示对MapOfList 类第一次使用
2》首先初始化静态(类)petPeople 变量,
3》第二static {} 块。
4》才显示petPeople.keySet() 的所有值。
package holding;
import typeinfo.pets.*;
import java.util.*;
import static net.mindview.util.Print.*;
public class MapOfList {
public static Map<Person, List<? extends Pet>> petPeople =
new HashMap<Person, List<? extends Pet>>();
static {
petPeople.put(new Person("Dawn"),
Arrays.asList(new Cymric("Molly"), new Mutt("Spot")));
petPeople.put(new Person("Kate"),
Arrays.asList(new Cat("Shackleton"), new Cat("Elsie May"),
new Dog("Margrett")));
petPeople.put(new Person("Marilyn"),
Arrays.asList(new Pug("Louie aka Louis Snorkelstein Dupree"),
new Cat("Stanford aka Stinky el Negro"), new Cat("Pinkola")));
petPeople.put(new Person("Luke"),Arrays.asList(new Rat("Fuzzy"), new Rat("Fizzy")));
petPeople.put(new Person("Isaac"), Arrays.asList(new Rat("Freckly")));
}
public static void main(String[] args) {
print("People: " + petPeople.keySet());
print("Pets: " + petPeople.values());
for (Person person : petPeople.keySet()) {
print(person + " has:");
for (Pet pet : petPeople.get(person))
print(" " + pet);
}
}
}
- HashSet,TreeSet,HashMap,一对一,一对多
- HashSet, TreeSet, HashMap, TreeMap
- HashMap之HashSet和TreeSet
- Java中的HashSet, TreeSet, HashMap, TreeMap
- JAVA学习笔记7 Hashset ,TreeSet , HashMap
- HashSet和TreeSet,HashMap和TreeMap
- HashSet TreeSet LinkedList ArrayList Hashmap Treemap
- TreeSet、TreeMap、HashSet、HashMap底层实现
- Set、HashSet、TreeSet、Map、HashMap、TreeMap
- HashMap、HashSet、TreeMap、TreeSet判断元素相同
- hashset,treeset,hashmap,treemap的区别
- 每日一记 HashSet,TreeSet,HashMap,TreeMap
- 一对多改成一对一
- ibatis 一对一,一对多
- MyBatis 一对一、一对多
- mybatis 一对一,一对多
- Hibernate 一对一,一对多关系
- MyBatis 一对一、一对多的
- 1004. 成绩排名 (20) PAT(B级)
- Kotlin基础教程-HelloWorld
- [LeetCode]67. Add Binary
- JavaScript特点
- 1.Javabean属性
- HashSet,TreeSet,HashMap,一对一,一对多
- 加载外部OBJ模型-03
- B
- Radar Installation
- 功能强大的文件上传插件带上传进度-WebUploader
- Vue.js(过滤器)
- JavaScript变量和内存(参数按值传递解惑)
- 河南省第十届ACM省赛 B 题 情报传递
- 07-图5 Saving James Bond