《温故而知新》JAVA基础八

时间:2022-12-27 14:16:22

集合接口与泛型

  1. 定义: 集合接口会操作一系列相同属性数据的对象类型的数据结构,类似于数组,但是相对于数组来说更显得高端大气
  2. 集合的接口分为Collention和Map两大类,不直接操作,而是通过子类的实现来操作

  3. 常用的集合有
  • Collection->List里面的ArrayList
  • Collection->Set里面的HashSet
  • Map(以键值对的形式)里面的HashMap
  1. Set和List的区别

    Set 接口实例存储的是无序的,不重复的数据。
    List 接口实例存储的是有序的,可以重复的元素。

遍历数据

  1. 遍历 ArrayList
    ```js
    //申明数据类型是String对象类型的集合
    List
  2. //第一种方式:通过foreatch
    for (String str : list) { //也可以改写for(int i=0;i<list.size();i++)这种形式
    System.out.println(str);
    }

  3. //第二种遍历,把链表变为数组相关的内容进行遍历
    String[] strArray=new String[list.size()];
    list.toArray(strArray);
    for(int i=0;i<strArray.length;i++) //这里也可以改写为 foreach(String str:strArray)这种形式
    {
    System.out.println(strArray[i]);
    }
  4. //第三种遍历 使用迭代器进行相关遍历

    Iterator

2. 遍历Mapjs
import java.util.*;

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

  //第一种:普遍使用,二次取值
  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<Map.Entry<String, String>> it = map.entrySet().iterator();
  while (it.hasNext()) {
   Map.Entry<String, String> entry = it.next();
   System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
  }
  
  //第三种:推荐,尤其是容量大时
  System.out.println("通过Map.entrySet遍历key和value");
  for (Map.Entry<String, String> 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);
  }
 }

}
```

泛型

  1. 定义:所谓泛型值得就是函数得参数得数据类型可以是任何得数据类型,不会因为参数类型的不同导致程序崩溃
    ```js
    // 泛型方法 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 ); // 传递一个字符型数组

2. 有界得类型参数js
public static <T extends Comparable

private T t;

public void add(T t) {
this.t = t;
}

public T get() {
return t;
}

public static void main(String[] args) {
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());

}
}
4. 泛型通配符?js
public class GenericTest {

public static void main(String[] args) {
    List<String> name = new ArrayList<String>();
    List<Integer> age = new ArrayList<Integer>();
    List<Number> number = new ArrayList<Number>();
    
    name.add("icon");
    age.add(18);
    number.add(314);

    getData(name);
    getData(age);
    getData(number);
   

}
//List<?>代表List