java 泛型 实例_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。

* 7.泛型擦除

* 首先泛型只是出现在源代码阶段,当编译之后泛型不存在了。

* 注:在泛型里必须写一个对象,比如String,不能写基本数据类型,比如int。

* 要写基本数据类型对应的包装类

* byte---Byte

* int---Integer

* short---Short

* loong---Long

* float---Float

* double---Double

* boolean---Boolean

* char---character

* */

public class fanxing {

//将一个任意数组进行首尾颠倒

public static void main(String[] args) {

String[] array= {"sss","ddd","xxx","bbb","mmm","ccc"};

System.out.println(Arrays.toString(array));

reverses(array);

System.out.println(Arrays.toString(array));

Integer[] array1= {11,22,33,44,55,66};

System.out.println(Arrays.toString(array1));

reverses(array1);

System.out.println(Arrays.toString(array1));

}

private static void reverses(T[] array) {

for(int i=0;i

T temp=array[i];

array[i]=array[array.length-i-1];

array[array.length-i-1]=temp;

}

/*private static void reverses(String[] array) {

for(int i=0;i

String temp=array[i];

array[i]=array[array.length-i-1];

array[array.length-i-1]=temp;

}*/

}

// 泛型使用在set集合上

@Test

public void setList() {

Set set = new HashSet();

set.add("baojuan");

set.add("xinxin");

set.add("xuanxuan");

// 遍历set集合只有两种方式(迭代器,增强for)

for (String s1 : set) {

System.out.println(s1);

}

// 迭代器

Iterator it = set.iterator();

while (it.hasNext()) {

System.out.println(it.next());

}

System.out.println("********************************");

}

// 泛型在map集合上的使用(结构:key--value形式)

@Test

public void testMap() {

Map map = new HashMap();

map.put("www", "111");

map.put("qqq", "222");

map.put("ttt", "333");

// 遍历map集合(有两种方式)

// 1.获取所有的key,通过key得到value,用get方法

// 2.获取key和value的关系

// 使用第一种方式遍历

Set 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> set1 = map.entrySet();

//遍历关系集合

for (Entry entry : set1) {

//获取关系中的key值

String s1 = entry.getKey();

//获取关系中的value值

String s2 = entry.getValue();

System.out.println(s1+"=>"+s2);

}

}

// 泛型在list集合上的使用

@Test

public void testList() {

List list = new ArrayList();

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 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

********************************

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值