1.数学集合:
2.在软件开发中应用广泛:商品列表
3.Java中使用接口Collection定义了集合概念。Collection接口中定义了集合的功能抽象:添加元素、删除元素、集合的并、集合的交、集合的差,. . . .
4.Java中提供了集合的实现类:ArrayList、LinkedList、HashSet等
5.LinkedList是使用的双向循环链表实现的线性表集合。ArrayList是使用变长数组实现的线性表集合。
6.常用子接口是线性表(List接口)与散列表(Set接口)。
7.List:线性表结构的集合,有序的,可以对列表中每个元素的插入位置进行精确地控制。列表通常允许重复的元素。
8.HashMap:由键值与值构成,键值是唯一的,且每一个键值对应一个值(此值可以为一个类)。
9.Set:使用HashMap实现的,无序且不重复。HashSet相当于仅保留key情况的HashMap,真正数学意义上的集合。顺序仅与散列数有关,即顺序由散列数决定。不可用于随机。
10.List:ArrayList(新)与Vector(旧)几乎完全一样,ArrayList(新)速度快,线程不安全,Vector(旧,1.2之前)速度慢,线程安全
Map:
11.HashMap与Hashtable几乎完全一样,HashMap(新)速度快,线程不安全,Hashtable(旧,1.2之前)速度慢,线程安全。
ArrayLise:
public static void main(String[] args) { List Cards =new ArrayList(); for(int i=Card.THREE;i<=Card.TWO;i++){ Cards.add(new Card(Card.CLUB,i)); Cards.add(new Card(Card.HEART,i)); Cards.add(new Card(Card.SPADE,i)); Cards.add(new Card(Card.DIAMOND,i)); } Cards.add(new Card(Card.BLACK,Card.JOKER)); Cards.add(new Card(Card.RED,Card.JOKER)); System.out.println(Cards); System.out.println(Cards.get(3)); //洗牌 Random tmpRandom=new Random(); Card tmpCard=new Card(); int tmpNum=0; for(int j=Cards.size()-1;j>0;j--){ // tmpNum=tmpRandom.nextInt(j); // tmpCard=(Card) Cards.set(tmpNum, Cards.get(j)); // Cards.set(j, tmpCard); Cards.set(j, Cards.set(tmpRandom.nextInt(j), Cards.get(j))); } System.out.println(Cards); } |
HashMap:
public static void main(String[] args) { Map user = new HashMap<>(); user.put("lirui", new User("lirui", "lirui")); user.put("tom", new User("tom", "tom")); user.put("jerry", new User("jerry", "jerry")); System.out.println(user.get("lirui")); Scanner In=new Scanner(System.in); System.out.println("请输入用户名:"); String Name=In.nextLine(); System.out.println("请输入密码:"); String PassWd=In.nextLine(); System.out.println(Name+PassWd); if(!user.containsKey(Name)){ System.out.println("无此用户"); return; } User load=(User) user.get(Name); System.out.println(load.passwd); if(!load.passwd.equals(PassWd)){ System.out.println("密码错误"); return; } System.out.println("欢迎用户:"+Name); } } class User{ String name; String passwd; public User(String name,String passwd) { this.name=name; this.passwd=passwd; } @Override public String toString() { return "name"+":"+name+" passwd:"+passwd; } @Override public boolean equals(Object obj) { if(obj==null){ return false; } if(this==obj){ return true; } if(obj instanceof String){ if((String)obj==passwd){ return true; } } return false; } |