Java中泛型的运用实例

package example6;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import org.junit.Test;

/*1.为什么要使用泛型?
 * 一般使用在集合上,比如现在将一个字符串类型放在集合里面,这时候,放入集合的字符会失去其本身的类型,只能是object类型,比如想要对这这个值进行转换,
 * 很容易出现类型转换错误。可以使用泛型解决这个问题。
 * 常用集合:list set map
 * list的三种实现(ArrayList  LinkedList   vector)
 * 此三者的区别:
 * 1.这三个类都实现了List接口,LinkList即存储在这两个集合中的元素的位置是不连续的,底层数据结构是列表结构。
 * 2.ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,查询速度快,
 * 但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢。
 * 3.LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入,修改,删除 速度较快.
 * 4.Vector是同步处理,性能较低;ArrayList是使用异步处理,性能高。
 * 5.Vector是线程安全的,ArrayList是非线程安全。LinkedList是非线程安全。
 * 6.一般情况都用ArrayList,ArrayList占据内存小,如果只是查找特定位置的元素或只在集合的末端增加、移除元素,那么使用Vector或ArrayList都可以。
 * 如果是对其它指定位置的插入、删除操作,最好选择LinkedList。
 *
 * 注:在泛型里必须写一个对象,比如String,不能写基本数据类型,比如int。
 * 要写基本数据类型对应的包装类
 * byte---Byte
 * int---Integer
 * short---Short
 * loong---Long
 * float---Float
 * double---Double
 * boolean---Boolean
 * char---character
 * */

public class fanxing {
    // 泛型使用在set集合上
    @Test
    public void setList() {
        Set<String> set = new HashSet<String>();
        set.add("baojuan");
        set.add("xinxin");
        set.add("xuanxuan");
        // 遍历set集合只有两种方式(迭代器,增强for)
        for (String s1 : set) {
            System.out.println(s1);
        }
        // 迭代器
        Iterator<String> it = set.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
        System.out.println("********************************");
    }

// 泛型在map集合上的使用(结构:key--value形式)
    @Test
    public void testMap() {
        Map<String, String> map = new HashMap<String, String>();
        map.put("www", "111");
        map.put("qqq", "222");
        map.put("ttt", "333");
        // 遍历map集合(有两种方式)
        // 1.获取所有的key,通过key得到value,用get方法
        // 2.获取key和value的关系
        // 使用第一种方式遍历
        Set<String> sets = map.keySet();
        // 遍历所有key返回的set
        for (String key : sets) {
            // 得到所有key对应的value值
            String value = map.get(key);
            // 打印输出
            System.out.println(key + "=>" + value);
        }

// 第二种方式遍历
        //set集合存放通过map.entrySet()方法获得的key与value的关系
        Set<Entry<String, String>> set1 = map.entrySet();
        //遍历关系集合
        for (Entry<String, String> entry : set1) {
            //获取关系中的key值
            String s1 = entry.getKey();
            //获取关系中的value值
            String s2 = entry.getValue();
            System.out.println(s1+"=>"+s2);
        }

}

// 泛型在list集合上的使用
    @Test
    public void testList() {
        List<String> list = new ArrayList<String>();
        list.add("aaaa");
        list.add("bbbb");
        list.add("cccc");
        // 遍历list集合
        // 普通for循环,迭代器,增强for循环(三种方式)
        for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            System.out.println(s);
        }
        System.out.println("===========================");
        // 增强for循环
        for (String s1 : list) {
            System.out.println(s1);
        }
        System.out.println("===========================");
        // 使用迭代器遍历集合
        Iterator<String> it = list.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
        System.out.println("********************************");
    }
}

运行结果:

qqq=>222
ttt=>333
www=>111
qqq=>222
ttt=>333
www=>111
aaaa
bbbb
cccc
===========================
aaaa
bbbb
cccc
===========================
aaaa
bbbb
cccc
********************************
xinxin
xuanxuan
baojuan
xinxin
xuanxuan
baojuan
********************************

原文地址:https://www.cnblogs.com/aasu/p/9189404.html

时间: 2024-07-31 21:55:19

Java中泛型的运用实例的相关文章

Java中泛型 类型擦除

转自:Java中泛型是类型擦除的 Java 泛型(Generic)的引入加强了参数类型的安全性,减少了类型的转换,但有一点需要注意:Java 的泛型在编译器有效,在运行期被删除,也就是说所有泛型参数类型在编译后都会被清除掉,看下面一个列子,代码如下: public class Foo { public void listMethod(List<String> stringList){ } public void listMethod(List<Integer> intList) {

java中泛型上限,下限应用

import java.util.*; class Person implements Comparable<Person>{ String name; int age; Person(){ name = ""; age = 0; } Person(String name, int age){ this.name = name; this.age = age; } public String toString(){ return name + "...."

java中定时器的应用实例

1 package com.xiangshang.listener; 2 3 import java.util.Timer; 4 import java.util.TimerTask; 5 6 import javax.servlet.ServletContextEvent; 7 import javax.servlet.ServletContextListener; 8 9 public class MyTimerListener implements ServletContextListen

Java 中 泛型的限定

泛型 一般 出现在集合中,迭代器中 也会出现! 泛型 是为了 提高代码的 安全性. 泛型 确保数据类型的唯一性. 在我们常用的容器中,  越是 单一 约好处理啊! 泛型的限定: ? 是通配符 指代 任意类型 泛型的限定上限: <? extends E> 接受 E 或者 E 的子类型. 泛型的限定下限: <?  super   E>  接收  E 或者 E 的父类. 泛型的限定上限 (定义父类 填装子类 类型!) 代码: package stu.love.v; import java

Java中泛型 使用

泛型: 1.5  之后出现  提高安全 1      泛型 确定 集合容器的类型. 2      <> 接收一种数据类型,(引用数据类型) ArrayList<String> lis = new ArrayList<String>() 目的: 将运行时期的 错误 转化到 编译时期,提高了安全性! 3      不需要 强制类型转换.  更加安全! 泛型的 擦除: 泛型在编译时期使用!使用完毕直接擦除. 编译完的时候 不存在 泛型. 好处: 使用了 泛型,不自需要强制类型

Java 中泛型的全面解析

Java泛型(generics) 是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter).声明的类型参数在使用时用具体的类型来替换.泛型最主要的应用是在JDK 5中的新集合类框架中.对于泛型概念的引入,开发社区的观点是褒贬不一.从好的方面来说,泛型的引入可以解决之前的集合类框架在使用过程中通常会出现的运行时刻类型错误,因为编译器可以在编译时刻就发现很多明显的错误.而从不好的地方来说,为了保证与旧有版本的兼容性,Java泛型的实现上存在着一些不够优雅的

Java中泛型在集合框架中的应用

泛型是Java中的一个重要概念,上一篇文章我们说过,当元素存入集合时,集合会将元素转换为Object类型存储,当取出时也是按照Object取出的,所以用get方法取出时,我们会进行强制类型转换,并且通过代码也可以看出来,我们放入其他类型时,如字符串,编译器不会报错,但是运行程序时会抛出类型错误异常,这样给开发带来很多不方便,用泛型就解决了这个麻烦 泛型规定了某个集合只能存放特定类型的属性,当添加类型与规定不一致时,编译器会直接报错,可以清楚的看到错误 当我们从List中取出元素时直接取出即可,不

Java中泛型的介绍与简单使用

学习目标 掌握泛型的产生意义. 掌握泛型的基本使用. 了解泛型的警告信息及泛型的擦除. 泛型是在JDK1.5之后增加的内容,泛型(Generic) 使用泛型的原因 题目分析: 首先要考虑到,必须建立一好一个表示坐标点的类--Point,此类中有两个属性分别用来表示x坐标和y坐标,但是x和y中所保存的整数类型会有三种(int.float.String),而要想使用一个类型可以同时接收这样的三种类型数据,现在只能使用Object,因为Object类可以接收任何类型的数据,都会自动发生向上转型操作,这

Java中泛型的理解

Java中的泛型,本质上来说,就是是参数化类型,就是说所操作的数据类型被指定为一个参数,而不是确定的某种类型.这种数据类型可以用在类.接口和方法创建中.即泛型类.泛型接口.泛型方法.这样说可能不够生动,来举些例子说明一下. 例子一 我们通过 例子一 来简单看看泛型的应用场景.下面的情况中,没有使用泛型: public class FanXingTest { public static void main(String[] args) { ArrayList arrayList = new Arr