集合接口与泛型
- 定义: 集合接口会操作一系列相同属性数据的对象类型的数据结构,类似于数组,但是相对于数组来说更显得高端大气
集合的接口分为Collention和Map两大类,不直接操作,而是通过子类的实现来操作
- 常用的集合有
- Collection->List里面的ArrayList
- Collection->Set里面的HashSet
- Map(以键值对的形式)里面的HashMap
- Set和List的区别
Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。
遍历数据
- 遍历 ArrayList
//申明数据类型是String对象类型的集合Listlist = new List ()//向集合里面添加数据list.add("hello")list.add("world")1. //第一种方式:通过foreatchfor (String str : list) { //也可以改写for(int i=0;i ite=list.iterator(); while(ite.hasNext())//判断下一个元素之后有值 { System.out.println(ite.next()); }
- 遍历Map
import java.util.*; public class Test{ public static void main(String[] args) { Mapmap = new HashMap (); map.put("1", "value1"); map.put("2", "value2"); map.put("3", "value3"); //第一种:普遍使用,二次取值 System.out.println("通过Map.keySet遍历key和value:"); for (String key : map.keySet()) { System.out.println("key= "+ key + " and value= " + map.get(key)); } //第二种 System.out.println("通过Map.entrySet使用iterator遍历key和value:"); Iterator > it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = it.next(); System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); } //第三种:推荐,尤其是容量大时 System.out.println("通过Map.entrySet遍历key和value"); for (Map.Entry entry : map.entrySet()) { System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); } //第四种 System.out.println("通过Map.values()遍历所有的value,但不能遍历key"); for (String v : map.values()) { System.out.println("value= " + v); } }}
泛型
- 定义:所谓泛型值得就是函数得参数得数据类型可以是任何得数据类型,不会因为参数类型的不同导致程序崩溃
// 泛型方法 printArray //E类泛型 public static < E > void printArray( E[] inputArray ) { // 输出数组元素 for ( E element : inputArray ){ System.out.printf( "%s ", element ); } System.out.println(); }使用: // 创建不同类型数组: Integer, Double 和 Character Integer[] intArray = { 1, 2, 3, 4, 5 }; Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4 }; Character[] charArray = { 'H', 'E', 'L', 'L', 'O' }; System.out.println( "整型数组元素为:" ); printArray( intArray ); // 传递一个整型数组 System.out.println( "\n双精度型数组元素为:" ); printArray( doubleArray ); // 传递一个双精度型数组 System.out.println( "\n字符型数组元素为:" ); printArray( charArray ); // 传递一个字符型数组
- 有界得类型参数
public static> T maximum(T x, T y, T z){ //extends 后面接上上线}
- 泛型类,类后加上参数类型
public class Box{ private T t; public void add(T t) { this.t = t; } public T get() { return t; } public static void main(String[] args) { Box integerBox = new Box (); Box stringBox = new Box (); integerBox.add(new Integer(10)); stringBox.add(new String("菜鸟教程")); System.out.printf("整型值为 :%d\n\n", integerBox.get()); System.out.printf("字符串为 :%s\n", stringBox.get()); }}
- 泛型通配符?
public class GenericTest { public static void main(String[] args) { Listname = new ArrayList (); List age = new ArrayList (); List number = new ArrayList (); name.add("icon"); age.add(18); number.add(314); getData(name); getData(age); getData(number); } //List 代表List ,List data) { System.out.println("data :" + data.get(0)); }}