首页 / JAVA / JAVA之泛型类与List的使用
JAVA之泛型类与List的使用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JAVA之泛型类与List的使用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3120字,纯文字阅读大概需要5分钟。
内容图文
![JAVA之泛型类与List的使用](/upload/InfoBanner/zyjiaocheng/717/041639971af244c4b0151491887ec4f9.jpg)
泛型
-
泛型类的诞生:增加编译期间的类型检查,取消类型转换的应用
-
泛型类的分类:
1) 泛型类:尖括号<>是泛型的标志
2) E是类型变量(Type variable)变量名一般要大写
3) E在定义时是形参,代表的意思是MyArrayList最终传入的类型,但现在还不知道
注意:泛型类可以一次有多个类型变量,用逗号分割 -
泛型是作用在编译期间的一种机制,即运行期间没有泛型的概念
-
泛型类的使用
//定义了一个元素是Book引用的MyArrayList
MyArrayList books=new MyArrayList();
books.add(new Book());
//会产生编译错误,Person类型无法转换为Book类型
books.add(new Person());
//不需要做类型转换
Book book=book.get(0);
//会产生编译错误,Book类型无法转换为Person类型
Person person=book.get(0);
注意:泛型的使用方式:只需要在所有类型后边跟尖括号,并且尖括号内是真正的类型,即E可以看做最后的类型(Book只能想象成E的类型,但实际上E的类型还是Object -
泛型总结
1) 泛型是为了解决某些容器,算法等代码的通用性而引入,并且能在编译期间做类型检查
2) 泛型利用的是Object是所有类的祖先类,并且父类的引用可以指向子类对象的特定而工作
3) 泛型是一种编译期间的机制,即MyArrayList和MyArrayList在运行期间是一个类型
4) 泛型是Java中的一种合法语法,标志就是尖括号<> -
自动装箱和自动拆箱是工作在编译期间的一种机制
List的使用 -
常见方法:List(线性表)
boolean add(E,e):尾插e
E remove(int index):删除index位置元素
Void clear(():清空
Arraylist(顺序表): ArrayLIst() 无参构造
ArrayList(Collection<? Extends E>c) 利用其他Collection构建ArrayList
LinkedList(链表):LinkedList() 无参构造
List的使用:代码练习
public class Card {
public int rank; //牌面值
public String suit; //花色;
@Override
public String toString(){
return String.format("[%s %d]",suit,rank);
}
}
import java.util.List;
import java.util.ArrayList;
import java.util.Random;
public class CardGame {
public static final String[] SUITS = {“?”, “?”, “?”, “?”};
//买一副牌
private static List buyDeck() {
List deck = new ArrayList<>(52);
for (int i = 0; i < 4; i++) {
for (int j = 1; j <= 13; j++) {
String suit = SUITS[i];
int rank = j;
Card card = new Card();
card.rank = rank;
card.suit = suit;
deck.add(card);
}
}
return deck;
}
private static void swap(List deck, int i, int j) {
Card t = deck.get(i);
deck.set(i, deck.get(j));
deck.set(j, t);
}private static void shuffle(List deck) {
Random random = new Random(20190910);
for (int i = deck.size() - 1; i > 0; i–) {
int r = random.nextInt(i);
swap(deck, i, r);
}
}
public static void main(String[] args) {
List deck = buyDeck();
System.out.println(“刚买回来的牌”);
System.out.println(deck);
shuffle(deck);
System.out.println(“洗过的牌”);
System.out.println(deck);
List<List> hands = new ArrayList<>();
hands.add(new ArrayList<>());
hands.add(new ArrayList<>());
hands.add(new ArrayList<>());
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 3; j++) {
hands.get(j).add(deck.remove(0));
}
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 3; j++) {
hands.get(j).add(deck.remove(0));
}
}
System.out.println(“剩余的牌:”);
System.out.println(deck);
System.out.println(“A手中的牌:”);
System.out.println(hands.get(0));
System.out.println(“B手中的牌:”);
System.out.println(hands.get(1));
System.out.println(“C手中的牌:”);
System.out.println(hands.get(2));
}
}
运行结果:
内容总结
以上是互联网集市为您收集整理的JAVA之泛型类与List的使用全部内容,希望文章能够帮你解决JAVA之泛型类与List的使用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。