黑马程序员—java技术blog—第七篇集合整体基础框架概述

时间:2023-02-18 15:25:01
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
集合:  集合的继承体系图    Collection   |- List    |- ArrayList    |- LinkedList    |- Vector   |- Set    |- HashSet     |- LinkedHashSet    |- TreeSet    Map   |- HashMap    |- LinkedHashMap   |- TreeMap   |- Hashtable    |- Properties      --------------------------  Collection: (方法)   public boolean add(Object obj) 添加元素   public boolean remove(Object obj) 删除元素   public boolean clear() 清空集合元素   public boolean contains(Object obj) 判断是否包含指定元素   public boolean isEmpty() 是否为空   public Iterator iterator() 迭代器   public int size() 获取集合元素的个数    List: (方法)   public boolean add(int index, Object obj) 添加元素   public boolean remove(int index) 删除指定位置元素   public boolean set(int index, Object obj) 修改元素的值   public boolean get(int index) 获取指定位置元素值   public ListIterator listIterator() 列表迭代器  Set:    Map: (方法)   public boolean put(K key, V value) 添加修改方法   public V get(K key) 根据指定的键 获得对应的值   public Set<K> keySet() 返回集合中所有的键   public Set<Map.Entry<K,V>> entrySet() 返回集合中所有键值对元素的Set集合   public Collection<V> values() 返回集合中所有值的集合    Map.Entry: (方法)   K getKey()   V getValue()    ---------------------------  常见的数据结构:   栈,堆,线性表,链表,二叉树,哈希表,图,数组    ----------------------------  遍历Map集合的方式:   键找值   键值对找键找值  ----------------------------  泛型   泛型接口  interface Inter<T> {}   泛型类    class Demo<K> {}   泛型方法  public <TT> void method(TT t){}   泛型通配符     <?> 代表任何类型     <? extends Animal> 代表类型为 Animal类型 或 Animal的子类类型     <? super Animal> 代表类型为 Animal类型 或 Animal的父类类型        ----------------------------  增强for、可变参数 基础案例: ArrayList存储字符串并遍历
 */


public class ArrayListDemo {
public static void main(String[] args) {

//创建ArrayList对象

ArrayList al = new ArrayList();

//添加元素 
al.add("aaa");
al.add("bbb");
al.add("ccc");
al.add("ddd");


//迭代器遍历 

ListIterator li = al.listIterator();

while (li.hasNext()) {
String s = (String)li.next();
System.out.println(s);
}
System.out.println("------");
//for 循环遍历 
for (int i = 0; i <al.size(); i++) {
System.out.println(al.get(i));
}

//转数组   


}
}
2.A:LinkedList 类概述
  数据结构 : 链表  
B:LinkedList 类特有功能
public void addFirst(E e)及addLast(E e)
public E getFirst()及getLast()
public E removeFirst()及public E removeLast()
应用案例: public class LinkedListDemo {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
LinkedList ll = new LinkedList();
ll.add("1.熊黛林");
ll.add("2.范冰冰");
ll.add("3.汤唯");
ll.add("4.林志玲");
ll.add("5.龙泽"); // 13号线地铁站  回龙观下一站 

System.out.println(ll);
System.out.println("-------------");
ll.addFirst("头号: 嫦娥 ");
ll.addLast("尾号: 凤姐");

System.out.println(ll);
System.out.println("-------------");
System.out.println(ll.getFirst());
System.out.println(ll.getLast());
System.out.println(ll);
System.out.println("--------remove-----");
System.out.println(ll.removeFirst());  //移除返回值类型  元素  
System.out.println(ll.removeLast());
System.out.println(ll);
3. Set集合 特点: 无序, 唯一
  无序:存和取的顺序不一样,不知道排序规则 
  唯一: 去除重复 
 
 
 */


public class SetDemo {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
Set set  = new HashSet<>();
set.add(3);
set.add(1);
set.add(5);
set.add(2);
set.add(4);

set.add(3);
set.add(1);
set.add(5);
set.add(2);
set.add(4);

set.add("aaa");
set.add("ccc");
set.add("bbb");
set.add("bb");
set.add("d");

set.add("aaa");
set.add("ccc");
set.add("bbb");
set.add("bb");
set.add("d");


System.out.println(set);

}
}
4.Map : 是一个接口 双列的集合, 一列是键 ,一列是值  
  特点: 键是唯一的,并且只能映射到一个值 . 所以说 键值是一一对应 . 
  一夫一妻制:    老公  -- 老婆  
 
  * a:添加功能
* V put(K key,V value):添加元素。
* 如果键是第一次存储,就直接存储元素,返回 null
* 如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值
* b:删除功能
* void clear():移除所有的键值对元素
* V remove(Object key):根据键删除键值对元素,并把值返回
* c:判断功能
* boolean containsKey(Object key):判断集合是否包含指定的键
* boolean containsValue(Object value):判断集合是否包含指定的值
* boolean isEmpty():判断集合是否为空
* d:获取功能
* Set<Map.Entry<K,V>> entrySet():???

* V get(Object key):根据键获取值

* Set<K> keySet():获取集合中所有键的集合
* Collection<V> values():获取集合中所有值的集合
* e:长度功能
* int size():返回集合中的键值对的个数


 */

案例:
public class MapDemo {
public static void main(String[] args) {

Map<String, String> m = new HashMap<String, String> ();  

//添加 
System.out.println(m.put("24", "乔治"));  //null 
System.out.println(m.put("24", "科比"));  //返回的这个键原来的值   ,乔治

System.out.println(m.put("24", "布莱恩特"));// 科比  
System.out.println(m.put("23", "詹姆斯"));// 
System.out.println(m.put("30", "库里"));// 
System.out.println(m.put("11", "汤普森"));// 
System.out.println(m.put("31", "纳什"));// 

//System.out.println(m.put(8, "詹姆斯"));// 
System.out.println(m);
System.out.println("-----------");
// 删除  
//m.clear();  //清空
//m.remove("31");  // 
//System.out.println(m.put("31", "小纳什"));// 
//System.out.println(m);

// 判断 
System.out.println(m.containsKey("23"));
System.out.println(m.containsKey("100"));
System.out.println("-----------------");
System.out.println(m.containsValue("奥胖儿"));
System.out.println(m.containsValue("詹姆斯"));
System.out.println(m.isEmpty());
System.out.println("-----------");
/// 获取功能  

//1.通过键 取值 
System.out.println(m.get("23"));
System.out.println(m.get("100"));
System.out.println("----------");
//2.通过集合   
//键的集合 :
Set<String> keySet = m.keySet();
for (String string : keySet) {
System.out.println(string+"--"+m.get(string));
}
System.out.println("------------");
// 值的集合 
Collection<String> values = m.values();
for (String string : values) {
System.out.println("v:"+ string);
}


System.out.println(m.size());

}


}
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------