基础篇——集合与泛型

一、集合

TreeSet:以有序状态保持并可防止重复,其元素必须是Comparable

HashMap:可用成对的key/value来存取

LinkedList:针对经常插入或者删除中间元素所设计的高效率集合

HashSet:防止重复的集合,可快速地找出相符的元素

LinkedHashMap:类似HashMap,但可以记住元素插入的顺序,也可以设定成依照元素上次存取的先后来排序

ArrayList:可以避免重复的元素,动态的操作

二、排序

对于基础主数据类型,可以用Collection.sort()直接排序

Collection.sort():

public static <T extends Comparable<? super T>> void sort(List<T> list)

public <T extends Animal> void take(ArrayList<T> list){}

指定按照类中某一个实例变量来排序:

class Song implements Comparable<Song>{
String title;
@override
public int compareTo(Song s){
return title.compareTo(s.tile);
}
}

上述方法只能按照title来排序。

按照多种实例变量来排序:

1、创建并实现Comparator的内部类,以compare()方法代替compareTo()方法;

2、制作该类的实例;

3、调用重载版的sort();

public class box{
...
class compare implements Comparator<Song>{
@override
public int compare(Song one,Sone two){
return one.artist.compareTo(two.artist);
}

@override
public int wordscompare(Song one,Sone two){
return one.words-two.words;
}
}
...
public void go(){
...
compare ac = new compare();
Collection.sort(songList,ac);
}
}

三、对象相等判断

if(foo.equals(bar) && foo.hashCode()==bar.hashCode()){
//foo equals to bar
}

equals保证引用是一样的;hashCode会冲突;

四、多态参数与泛型

public <T extends Animal> void take(ArrayList<T> list)
public void take(ArrayList<? extends Animal> list)

典例:

ArrayList<Dog> dogs = new ArrayList<Animal>();
ArrayList<Animal> animals = new ArrayList<Dog>();
List<Animal> list = new ArrayList<Animal>();//ok
ArrayList<Dog> dogs = new ArrayList<Dog>();//ok
ArrayList<Animal> animals = dogs;
List<Dog> dogList = dogs;//ok
ArrayList<Object> objects = new ArrayList<Object>();//ok
List<Object> objList = objects;//ok
ArrayList<Object> objs = new ArrayList<Dog>();

五、

1、Collection.sort(List);

List中对象的类必须实现Comparable、compareTo()

2、Collection.sort(List,compare);

List中对象的类不必实现Comparable、Comparator

compare对象的类必须实现Comparator、compare()

基础篇——集合与泛型

时间: 2024-08-07 16:58:37

基础篇——集合与泛型的相关文章

Java基础之集合与泛型

话不多说,直接上图 1.Collection集合小结 注意: 凡是使用哈希表保存对象的容器,保存的对象在容器中都是唯一的,唯一性是通过被保存对象的hashCode和equals方法共同确定: 凡是使用二叉树保存对象的容器,保存的对象在容器中都是唯一的,而且保存时就是有序的,有序性和唯一性依赖被保存对象实现Comparable接口,或传递给容器的比较器对象(实现了Comparator接口的对象): 2. Map集合总结 Map集合的特点: 1, Map集合中存储的是key-value的映射关系:

黑马程序员---java基础-Java集合与泛型

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.集合 1.集合框架体系 2.集合与数组的区别 <1:数组是固定长度:集合可变长度. <2:数组可以存储基本数据类型或者引用数据类型:集合只能存储引用数据 类型. <3:数组存储的元素必须是同一个数据类型:集合存储的对象可以是不同数 据类型. ** 集合内容可分为两大部分Collection.Map 3.Collection (一)List(抽象类) List集合判断元素是否相同,依

Python基础篇 -- 集合

set集合 set 中的元素是不重复的,无序的 里面的元素必须是可hash的,(int str tuple bool) set 就是dict 类型的数据,但是不保存value 只保存 key set集合也用{}表示 set() 表示空集合 去重复 lst = [1,2,3,3,3,3,4,4,5,6] s = set(lst) lst = list(s) print(lst) # [1, 2, 3, 4, 5, 6] 集合的增删改查 set集合增删改查 增加 s = {"刘嘉玲", '

.NET基础 (09)常用集合和泛型

常用集合和泛型1 int[]是引用类型还是值类型2 数组之间如何进行转换3 解释泛型的基本原理4 什么是泛型的主要约束和次要约束 常用集合和泛型1 int[]是引用类型还是值类型 数组类型是一族类型,它们都继承自System.Array,而System.Array又继承自System.Object.所有数组的类型都是引用类型. 引用类型的数组和值类型的数组的内存分配: 2 数组之间如何进行转换 数组类型在符合条件的情况下可以进行隐式地转换,条件包括:数组维数必须相同:目标项目类型和源项目类型必须

Java 基础篇之泛型

背景 在没有泛型前,一旦把一个对象丢进集合中,集合就会忘记对象的类型,把所有的对象都当成 Object 类型处理.当程序从集合中取出对象后,就需要进行强制类型转换,这种转换很容易引起 ClassCastException 异常. 定义 程序在创建集合时指定集合元素的类型.增加了泛型支持后的集合,可以记住集合中元素的类型,并可以在编译时检查集合中元素的类型,如果试图向集合中添加不满足类型要求的对象,编译器就会报错. 示例 集合使用泛型 import java.util.ArrayList; imp

java基础(18):集合、Iterator迭代器、增强for循环、泛型

1. 集合 1.1 集合介绍 集合,集合是java中提供的一种容器,可以用来存储多个数据. 在前面的学习中,我们知道数据多了,可以使用数组存放或者使用ArrayList集合进行存放数据.那么,集合和数组既然都是容器,它们有啥区别呢? 数组的长度是固定的.集合的长度是可变的.集合中存储的元素必须是引用类型数据 1.2 ArrayList集合存储元素 练习一:ArrayList集合存储5个int类型元素 public static void main(String[] args) { ArrayLi

Prism+MaterialDesign+EntityFramework Core+Postgresql WPF开发总结 之 基础篇

原文:Prism+MaterialDesign+EntityFramework Core+Postgresql WPF开发总结 之 基础篇 本着每天记录一点成长一点的原则,打算将目前完成的一个WPF项目相关的技术分享出来,供团队学习与总结. 总共分三个部分: 基础篇主要争对C#初学者,巩固C#常用知识点: 中级篇主要争对WPF布局与美化,在减轻代码量的情况做出漂亮的应用: 终极篇为框架应用实战,包含MVVM框架Prism,ORM框架EntityFramework Core,开源数据库Postgr

Hybrid APP基础篇(四)-&gt;JSBridge的原理

说明 JSBridge实现原理 目录 前言 参考来源 前置技术要求 楔子 原理概述 简介 url scheme介绍 实现流程 实现思路 第一步:设计出一个Native与JS交互的全局桥对象 第二步:JS如何调用Native 第三步:Native如何得知api被调用 第四步:分析url-参数和回调的格式 第五步:Native如何调用JS 第六步:H5中api方法的注册以及格式 进一步完善JSBridge方案 思路 实现 注意 完整的JSBridge 完整调用流程图 另外实现:不采用url sche

DOM系列---基础篇

DOM (Document Object Model) 即文档对象模型, 针对 HTML 和 XML 文档的 API (应用程序接口) .DOM 描绘了一个层次化的节点树,运行开发人员添加.移除和修改页面的某一部分.DOM 产生于 网景公司及微软公司创始的 DHTML(动态 HTML) ,但现在它已经成为表现和操作页面标记的真正跨平台.语言中立的方式. DOM 中的三个字母: D(文档)可以理解为整个 Web 加载的网页文档: O(对象)可以理解为类似 window 对象之类的东西,可以调用属性