黑马程序员_集合概述(Collection List&Set)

Screenshot_2026-11-04-16-26-45-46.jpg 立即下载

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 

集合概述(Collection)

第一部分 List & Itertor

一、集合概述

集合从功能理解上来说,其实和数组有相同之处,同样是存储数据,同样是容器,但又有所不同。我们知道,数组也是一个容器,在建立一个数组的时候,就规定了这个数组的长度以及里面要存的数据类型,当然数据也是可以存储对象的,只要类型是对象所属类型即可。但集合相对于数组来说,它的长度不是固定的,是可变的长度,它里面只能存储对象,就是说如果基本数据类型想要存入集合中,那么基本数据类型就得封装成基本数据类型的对象,集合可以存储不同类型的对象。

集合也分不同的容器,对这些容器的共性进行向上抽取,形成一个体系,这就是集合框架。当着集合框架产生,我们就可以看顶层的父类,看其中功能,就可以了解整个体系锁具有的基本功能,这样我们参考父类,创建子类对象即可。整个体系顶层,就成为集合Collection。

Collection是一个接口,它有两个连个子接口List和Set,两个子接口下还有多个子接口:看图:

 

鉴于不同数据的存储方式都即数据结构都不同,所以集合框架中会有多个容器。

集合类的出现,是因为面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。

 

数据和集合类同样是容器,但是又不同之处:

1、     数据虽然也可以存储对象,但是长度固定,集合长度是可变的

2、     数组中可以存储基本数据类型,集合只能存储对象

集合类特点,

1、     集合只能存储对象

2、     集合长度是可变的

3、     集合可以存储不同类型的对象

 

二、集合共性方法

首先建立一个List的子类对象,以ArrayList为例。

首先建立ArrayList对象,这样就建立了一个容器

                   ArrayList  a = new ArrayList()

1、     添加元素,add(Object obj)

    al.add("java01");

al.add("java02");

add方法接收的是Object类型,以便于接受任意类型的对象。

集合与数组一样时容器,同时一样的是存储方式,存储的都是对象的引用地址值。

2、     获取长度

int  size  =a.size() 返回的是int值

3、删除元素

            a.remove("java01" );删除一个对象

         a.clear();  清空集合

4、判断元素

         boolean a.contains("java01")判断是否包含某个元素

a.          isEmpty()判断集合是否为空

4、     改变集合元素

集合1.retainAll (集合2):即集合1中只会保留与集合2中相同的元素。

集合1.removeAll (集合2):即集合1中会删除与集合2中相同的元素。

 

三、元素取出:迭代器

         集合中的迭代器,其实就是集合的去除元素的方式。示例程序如下:

                   ArrayList al= new ArrayList();

                   al.add("java01");

                   al.add("java02");

                   Iterator it = al.iterator();

                   while(it.hasNext()){

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

                   }

集合al继承了父类的iterator方法,会放回一个iterator的子类对象,其中有

方法hasNext(),这是判断集合中是否有月元素,有的话返回true,没有的话返回false。

方法next(),这就逐个去除集合中的元素,返回迭代的下一个元素。

 

不同的容器,元素的取出方法就会不同,有几个容器,可能就会有几个方法,这些方法可能会有共同之处,比如都有取出动作,当然每个取出动作都不一样,但有共性内容。我们可以将这这取出动作,进行抽象的抽取,描述成一个新接口Iterator。这样,把取出方式定义在集合内部,这样的取出方式就可以直接访问集合中的元素,那么取出的具体方式就定义成了内部类。有共同的规则即接口,有具体实现的内部类,那么集合就通过对外提供的一个方法iterator(),让我们能够取出集合中的元素。

 

四、List

Collection中包含两个体系,上图可知:

1、  List 元素是有序的,元素可以重复,因为集合体系有索引。相当于数组。

2、  Set 元素中是无序的,元素不可以重复。

 

List集合的特有方法:
1、添加元素

  add(“java 00”);

2、在指定位置添加元素

   add( 1,”java 01”);

3、删除指定位置元素

   remove ( 2 );

4、修改元素

   set( 4 , “java ok”);

5、通过角标获取元素

   get( 3);

6、获取对象位置

   indexOf ( “java 01”);

7、获取子集合

   subList ( 3,4 )  包含头不包含尾。

 

关于ListIterator

ListIterator是List集合的特有方法,关于怎么用先看一下代码:

           ArrayList al = new ArrayList();

           al.add("java01");

           al.add("java02");

           al.add("java03");

 

           Iterator it = al.iterator();

           while(it.hasNext()){

                    Object obj = it.next();

                    if(obj.equals("java02"))

                             al.add("java009");

}

上面代码中,我建立一个List集合的对象,然后进行迭代器迭代,在迭代的过程中,对集合中元素进行操作,但是这时系统汇报一个异常ConcurrentModificationException,意思就是并发操作非法。简单来说,我们建立了一个List集合,这个集合对象可以操作其中的元素,同时,我们通过这个对象得到一迭代器Iterator,这个迭代器同时也可以操作这个集合中的元素,这样在迭代过程中,我们遍历元素用的是Iterator,增加元素用的是集合对象al。此时,两个对象操作同一个集合的元素,就会产生安全隐患,比如,集合对象减掉一个元素,而迭代器确认为这个元素是存在的,这样就冲突了。

这时,我们想只用迭代器进行增删改查,但是迭代器只有三个方法,hasNext,next,remove,这三个方法不能满足我们所需要的。所以就用到了ListIterator,这时一个Iterator的子接口,这个子接口中有对元素的判断、取出、删除、添加、修改等操作,这时子接口就很实用了,满足我们的要求。

通过List中方法listIterator,获取这个接口的对象。具体程序如下:

                  ArrayListal = new ArrayList();

                  al.add("java01");

                  al.add("java02");

                  al.add("java03");

                  al.add("java04");

 

                  Listiterator it = al.listIterator();

                  while(it.hasNext()){

                           Objectobj = it.next();

                           if(obj.equals("java02"))

                                    it.add("java009");

 

方法时这样的,注意的是ListIterator中,hasNext(正向遍历)和hasPrevious(逆向遍历)两个方法中指针的走向。不管两个方法哪个先用,指针都是在0角标为,这就意味着hasNext此时返回值为true,就是说指针后面有元素;而此时,hasPrevoius返回为false,就是说指针前面没有元素。只有当使用hasNext后,指针后移,然后再使用hasPrevious返回的结果才为true。当hasNext遍历完后,在使用hasPrevious就会逆向遍历了。

 

 

 

List集合具体对象的特点:

有一中的关系如可知,List包含以下三个具体的对象,各自有特点:

1、 ArrayList

底层数据结构是数组结构。特点是:查询更改很快,增删稍慢。线程不同步。

初始长度为10,需要改变的话,每次增加50%

2、 LinkedList

底层数据结构是链表结构(就是A-B-C-D-F-G-H,知道前者才知道后者)。特点是,增删很快,查询稍慢。线程不同步。

3、 Vector

底层数据结构是数组结构,线程同步。早于ArrayList,西安被ArrayList替代了。无论增删或查询都很慢。

初始长度为10,需要改变的话,每次增加100%

 

1)关于Vector

Vector中,凡是带elements都是它的特有方法。

他有一个特别的方法,elements(),它会返回一个Enumeration(枚举)的子类对象。

枚举就是Vector特有的取出方式,其实枚举和迭代器很像,但是因为枚举的名称和方法名都过长,所以逐渐被枚举取代了。

 

2)关于LinkedList

LinkedList特有方法:

addFirst();在链表头部加入一个元素

addLast();在链表尾部加入一个元素

 

getFirst();获取头部元素,但不删除

getLast();获取尾部元素,但不删除

获取元素,但不删除元素,如果集合中没有元素,会有NoSuchElementException

removeFirst();移除头部元素,同时删除元素

remoceLast();移除尾部元素,同时删除元素

获取元素,但是删除元素,如果集合中没有元素,会有NoSuchElementException

 

JDK1.6中出现的替代的方法

offerFirst();

offerLast();

 

peekFirst();

peekLast();

获取元素,但是不删除元素,如果集合中没有元素,返回null

pollFirst();

pollLast();

获取元素,但是元素被删除,如果集合中没有元素,返回null

 

在List编程时应注意的:

         List集合判断元素是否相同,依据的是元素自身所有的equals方法,

判断元素,contains和remove方法在使用时,就是依据equals。比如contains,在判断是否包含的时候,会在底层调用元素自身所有的equals方法进行判断比较,而元素尤其是自定义元素都是继承自Object中的equals,比较的是对象的地址值,所以,即便是两个元素内容相同,也会判断为不同,因为地址值就不一样。所以,我们在自定义元素的时候,一定要复写equals方法。看一个自定义元素的内部方法:

class Person{

-----------------------省略部分代码---------------------

         public boolean equals(Object obj){

                   if(!(objinstanceof Person))

                            returnfalse;

                    Person p = (Person)obj;

                    return this.name.equals(p.name) &&this.age==p.age;

         }

}

注意equlas方法的复写

 

 

 

      第二部分 Set

Collection又一子集合

一、            HashSet

Set集合,元素是无序的(存入和取出的顺序不一定一致),没有重复元素。Set集合的功能和Collection是一致的。

         HashSet是Set下的子集合,其功能和List中的功能基本一致。HashSet:底层数据结构是哈希表。

         了解HashSet,先要了解HashSet的内存机制。因为其元素是无序的,且没有重复元素。它在内存中这样存入元素的:

首先会判断每个元素的哈希值,如果哈希值不同,那么它就会根据哈希表,把地址值放入相应的位置上,这样即使先存入的元素可能也不会在前面,所以其取出和存入的顺序不一定一致。如果哈希值相同,那么它就会判断元素的内容是否相同,如果相同,那么就不会存入集合中,如果不同,就会在这个相同的哈希值下面顺延,存入这个元素。这样就保证了了元素的唯一性。

简单来说,HashSet如何保证元素的唯一性:

        是通过元素的两个方法,hashCode和equals来完成。如果元素的hashCode值相同,才会判断equals是否为true。如果hashCode不相同,不会调用equals。

 

其实在思想上来说,和List中,我们想要去除相同元素的想法是一样的。在HashSet中,我们想要定义自己的元素,就要复写hashCode和equals方法,这样才会执行上面描述的判断。示例程序如下:

classPerson{

------------------省略部分代码---------------

public int hashCode (){

         retrun  name.hashCode( ) + age*11

}

         publicboolean equals(Object obj){

                   if(!(obj instanceof Person))

                            return false;

                    Person p = (Person)obj;

                    return this.name.equals(p.name) &&this.age==p.age;

         }

}

比较List和HashSet,

不同点:前者是在判断是否相同元素时,会用equals方法;后者是在添加的时候,就动用hashCode和equals方法,而且在判断元素是否相同时,先会调用hashCode方法,不同同则不调用equals方法,相同就调用equals方法。

相同点:都比较依赖元素自身的方法

 

二、TreeSet

TreeSet可以对元素进行自然排序。

当我们在给TreeSet中添加元素的时,会按照自然顺序进行排序。但如果我们存入自定义的元素,就会失败。这里就要解释下为什么:很简单,Tree要求存入的元素具备比较性,怎么样具备比较性,其实就是实现Comparable,而Comparable中只有一个方法,就是compareTo(Object obj),那么就会用到元素自身所有的compareTo方法了。注意返回值为int,大于就是正数,小于就是负数,等于就是零。

            我们在自定义元素的时候,只要实现Comparable接口,实现其compareTo方法即可,在方法中定义判断条件。看示例程序:

class Person implements Comparable{

-------------------------省略部分代码---------------

            publicint compareTo(Object obj){

                   if (obj instanceof Person)

                            throw newRuntimeException("class is wrong");

                   Person p = (Person)obj;

                   if(this.age>p.age)

                            return 1;

                   if(this.age==p.age)

                            return this.name.compareTo(p.name);

                   else

                            return -1;

            }

上面就是具体的方法示例,但是要注意一点,当我们自定义元素的时候,可能会有多个判断条件,就是说,在TreeSet集合中,想要按我们自己要求的顺序打印,就要分清主次条件,当主要条件相同时,一定要判断次要条件。

 

在返回最初,我们想要了解的底层数据结构。

TreeSet底层数据结构,是一种二叉树结构。语言描述比较繁琐,直接上图:

 

已上图来描述,当最先存进去的是3,这是在二叉树顶部,然后存进2,它会先跟3比较,比3小,那么就放到3的左边。再存入1,又先跟3比,比3小,再跟3的左边比,也比2小,那么就放到2的左边。再存入7,先跟3比,比3大,放到3的右边。再存入5,先跟3比,比3大,再跟7比,比7小,放到7的左边。再存入8,比3和7都打,放到7的右边。一次类推。这就是二叉树结构。

当我们程序中进行判断时,TreeSet集合主要是看元素中,compareTo返回的值是正数、负数还是零。TreeSet集合取元素的时候,默认是从最左边开始取。因为这样,我们就可以控制二叉树的排序,比如我们把元素compareTo的返回值固定为1,那么元素就会向左排序,那么取出的时候就有了输入时候的顺序。

 

TreeSet排序的第一种方式:让元素自身具备比较性,元素需要实现Comparable接口,覆盖compareTo方法,这种方式成为元素的自然排序,或者叫做默认排序。

 

TreeSet排序的第二种方式:当自身元素不具备比较性时,或者具备的比较性不是所需要的,这时就让集合自身具备比较性。方式就是,定义一个比较器compartor,将比较器对象作为参数传递给TreeSet集合的构造函数。那我们就自定义一个比较器,实现Comparator,复写其中的compare方法,然后把比较器对象传入TreeSet集合的构造函数即可。

实现程序如下:

class MyCopare implementsComparator{

         public  int  compare(Object o1,Object o2){

                   Person p1 =(Perosn)o1;

                   Person p2 =(Perosn)o2;

                   int num =p1.getName().compareTo(p2.getName());

                   if (num==0){

                            returnnew Integer(p1.getAge()).compareTo(new Integer(p2.getAge()));

                   }

                   return num;

         }

}

既然TreeSet有两种排序方式,如果当两种排序方式都存在是,以比较器为主。

 

 

 

 

 

 

 

 

Collection总结:

1、           Collection是一个容器,它的特点是,只能存储对象,对象类型可变,长度可变。而数组可以存储对象,也可以存储基本数据类型,但只能存一种类型,长度固定。

2、           Collection作为父类,看其中的方法,建立子类对象即可使用其中的方法,那么这里就有共有的方法在整个Collection都可使用,进行增删改查判断的操作。

3、           我们要操作集合中元素,尤其是遍历元素,就用到迭代器Iterator,获取方法时当前集合的iterator方法,即可获得迭代器。使用迭代器中的hasNext和next即可遍历集合。值得注意的是,想在遍历过程中操作集合,那么在List集合中就用listIterator方法返回一个ListIterator对象,使用这个对象中的方法即可(这个对象中的方法和集合共性方法相似)。同时理解迭代器原理,其实是每个集合的内部类,Iterator是引用。

4、           Collection下有两个大的子类,分别为List和Set。

List:有序集合,元素可以重复,有索引。

Set:无序集合,元素不可以重复

5、           List中子集合:

ArrayList:

底层数据结构是数组结构。特点是:查询更改很快,增删稍慢。线程不同步。

初始长度为10,需要改变的话,每次增加50%

   LinkedList:

底层数据结构是链表结构(就是A-B-C-D-F-G-H,知道前者才知道后者)。特点是,增删很快,查询稍慢。线程不同步。

Vector:

底层数据结构是数组结构,线程同步。早于ArrayList,西安被ArrayList替代了。无论增删或查询都很慢。

初始长度为10,需要改变的话,每次增加100%

 

重点是:List集合在进行元素的判断的时候,要复写equals方法。

6、           Set中的子集合:

HashSet:底层数据结构是哈希表。HashSet中元素无序,是因为它是根据元素地址值来存入内存中的,而地址值就是哈希值,每个元素的哈希值不一样,所以存入顺序和输出顺序会不一致。

为了保证集合元素的唯一性,再加入元素时,HashSet会先判断hashCode的值是否相同,如果不同则存入,如果相同在equals方法判断,不同存入、相同排除。所以如果我们自定义元素,最好复写hashCode和equals方法。

 

TreeSet:底层数据结构是一种二叉树结构。

为了保证元素的唯一性,TreeSet集合也会对元素进行比较,按自然顺序排序。但这里要求元素具有可比较性,就里就涉及到两种排序方式。

一、让元素自身具备比较性,元素需要实现Comparable接口,覆盖compareTo方法,这种方式成为元素的自然排序,或者叫做默认排序。

二、当自身元素不具备比较性时,或者具备的比较性不是所需要的,这时就让集合自身具备比较性。方式就是,定义一个比较器compartor,将比较器对象作为参数传递给TreeSet集合的构造函数。那我们就自定义一个比较器,实现Comparator,复写其中的compare方法,然后把比较器对象传入TreeSet集合的构造函数即可。

注意compareTo和compare方法返回的都是int型值。

【动态多智能体系统的通信感知编队控制】一种新颖的通信感知编队控制策略,用于动态多智能体系统研究(Matlab代码、Python代码实现) 内容概要:文档名为《Plecs全桥LLC谐振变换器仿真模型.txt》,但其内容并未深入介绍Plecs环境下全桥LLC谐振变换器的具体建模与仿真过程,而是呈现为一份涵盖多领域科研主题的资源列表。文档内容广泛涉及多智能体系统控制、无人机路径规划、电力电子变换器、状态估计、信号处理、优化算法等研究方向,并多次提及Matlab/Simulink、Python等工具的代码实现。整体来看,该文档更像是一份科研项目目录或技术资源索引,重点推介了包括LLC谐振变换器在内的多种控制系统与电力电子仿真模型,但对标题所述核心内容缺乏详尽的技术描述与实现细节。; 适合人群:电力电子、自动化、控制工程、信号处理及多智能体系统等相关领域的研究生、科研人员与工程技术人员。; 使用场景及目标:①为科研工作者提供跨学科的技术方向参考与研究选题灵感;②获取电力系统、无人机控制、信号处理等领域成熟的Matlab/Simulink或Python仿真代码资源,用于算法验证与模型复现。; 阅读建议:建议将此文档作为科研资源导航目录使用,读者可根据自身研究方向筛选感兴趣的主题,并通过文中提供的公众号或网盘链接获取完整的代码、仿真模型与配套资料进行深入学习与实践。 立即下载

相关推荐

产业园区运营负责人如何提升企业技术需求与科研资源的精准匹配效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

java list 修改值_在Java中怎么修改ArrayList()中元素的值?

展开全部1、什么是ArrayList :ArrayList就是传说中的动态数组,用MSDN中的说法,就62616964757a686964616fe78988e69d8331333365643662是Array的复杂版本,它提供了如下一些好处:(1)动态的增加和减少元素(2)实现了ICollection和IList接口(3)灵活的设置数组的大小2、ArrayLis的创建以及增删改查方法:(1)Ar...

weixin_29273849的博客 6306

气象数据收集

国家气象信息中心-中国气象数据网 (cma.cn)国家气象信息中心-中国气象数据网 (cma.cn)预报数据:需要定制,收费10万+路面数据同化系统,实时。

weixin_42209537的博客 3487

黑马程序员_多线程(线程安全和通信)

多线程二 一、线程安全问题 线程安全问题,详细来说,先看一个程序。                             If (tick>0)                                      System.out.println(Thread.currentThread()+"..sale..."+tick- -); 这是继承了Runnable接口的子类的r

catch_future的专栏 958

基于Meteoinfo与TrajStat的后向轨迹聚类分析实战:从数据准备到可视化制图

本文详细介绍了基于Meteoinfo与TrajStat进行后向轨迹聚类分析的完整实战流程。从Java环境配置、Meteoinfo软件与TrajStat插件安装,到精准获取NOAA气象数据、设置参数进行批量轨迹计算,再到利用聚类分析提炼主要气流路径,并最终完成专业地图可视化与制图。文章旨在帮助环境与气象研究者快速掌握从数据准备到成果输出的全链路操作。

p4q5r6s7t的博客 804

Ollama内网离线部署大模型实战:从模型文件到私有化服务

本文详细介绍了如何在内网离线环境下,利用Ollama部署私有化大模型服务。内容涵盖从获取GGUF格式模型文件、手动安装Ollama、编写核心Modelfile配置文件,到创建运行模型、性能调优及安全加固的全流程实战指南,旨在帮助企业安全、可控地构建内部AI能力。

weixin_29209805的博客 215

黑马程序员_IO(字符流和字节流)

IO(字符流和字节流) 字符流 一、字符流写入 IO就是Input和Output的简写,意思就是输入输入。IO流就是Input Output流,是用来处理设备之间的数据传输。不同设备之间是要有信息传输的,IO就是处理这信息传输的。在java中,对数据操作是通过流的方法,用于操作流的对象在IO包中。 流按操作分为两种数据:字节流和字符流。 按流向分为:输出流和输入流。 在操作数据中,

catch_future的专栏 682

VScode搭建Opencv(C++开发环境)

VScode配置Opencv一、准备软件二 、下载软件1、MinGw下载2、 Cmake下载3、Opencv下载三、编译1、cmake-gui2、make3、install四、 VScode配置1、launch.json2、c_cpp_properties.json3、tasks.json五、测试 用了半天事件,看了各种的博客终于配置成功了,在这里记录并分享一下,让更多的人少走弯路。 本次环境是Win 10. 一、准备软件 我们本次用到的3个软件,(建议读者文件路径,文件版本 尽量都和我相同,这样不容易出错

河旬的博客 8万+

黑马程序员_集合(Map)

Map 一、Map集合 Map集合:该集合存储键值对(键值对,就是存在映射关系两个对象,比如A指向B,C指向D,知道A就知道B,知道C就知道D),一对一对往里存,而且要保证键的唯一性。 Map集合的结构,看图: 二、Map集合的共性方法 1、  添加 V put ( K key , V  value) void putAll(Map, m) 2、  删除 void c

catch_future的专栏 614

【Flow3D实战】从零构建水利冲淤模型:关键步骤与参数详解

本文详细介绍了使用Flow3D构建水利冲淤模型的关键步骤与参数设置技巧。从基础认知到前处理、计算设置和后处理,全面解析如何高效模拟水流与泥沙的相互作用,特别适用于桥墩冲刷、水库泄洪等工程场景。通过实战案例分享,帮助读者掌握Flow3D在水利工程中的精准应用,提升模型精度与计算效率。

weixin_42549723的博客 502

别再用LabelImg了!我手搓了一个C#“一站式”YOLO工具箱,标注训练推理全搞定

这个工具箱目前已经在两个小型产线项目中试用,反馈非常好。效率提升:原本需要 2 天完成的“数据准备 - 训练 - 验证”循环,现在缩短到了 2 小时。门槛降低:产线技术员经过 10 分钟培训,就能独立完成新产品的模型迭代。当然,它还有改进空间未来计划集成主动学习功能:自动筛选出置信度低的图片,推荐优先标注。支持多模型管理:方便在不同产品型号间快速切换。增加PLC 通信模块:直接在推理界面配置 IO 信号,实现真正的软硬联动。最后想说工具的本质是服务于人。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 442

黑马程序员_泛型概述和工具类

泛型概述 一、泛型的理解 先看一个程序: classTest{          public static void main(String[] args) {                    ArrayList al = newArrayList();                    al.add("abc2");                    al.add(

catch_future的专栏 559

多算法数据预测——BP、ELM、LSTM、BiLSTM和SAELSTM,附Matlab源码

本文将为大家介绍基于BP、ELM、LSTM、BiLSTM和SAELSTM多种算法的数据预测,并提供相应的Matlab源码。SAELSTM算法是一种结合自动编码器和LSTM神经网络的深度学习方法,用于时间序列数据预测。ELM算法是一种单层前向神经网络,在单次训练过程中直接产生输出权重,从而具有快速学习和良好推广性能。多算法数据预测——BP、ELM、LSTM、BiLSTM和SAELSTM,附Matlab源码。总体来看,采用多种算法进行数据预测可以提高预测准确率,并可根据不同场景选择适合的算法。

qq_39605374的博客 864

黑马程序员_File和Properties概述

File概述 一、File概述 用来将文件或者文件夹封装成对象,方便对文件与文件夹的属性信息进行操作。File对象可以作为参数传递给流的构造函数。 创建方法: 1、将已有的和未出现的文件或文件夹封装成对象 File f 1= newFile(“c:\\a\\a.java”); File f2 = newFile(“c:\\a”); File f = newFile( “a.java”

catch_future的专栏 522

升级conda时出现Malformed version string invalid chars错误解决方案

但有时,当你使用“conda upgrade”的命令时,你可能会遇到一个错误,提示你的环境解析失败,出现“Malformed version string invalid chars”错误消息。如果以上两个步骤都没有解决你的问题,那么你可以考虑更新conda的依赖项。如果你的conda版本已经是最新的,那么你需要清理conda的缓存。最后,如果以上方法都无法解决问题,你可以尝试使用pip进行更新。如果你的conda版本过旧,你需要先更新conda。首先,你需要确认你当前使用的conda版本。

BUG?不存在的! 1409

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

黑马程序员_GUI概述

GUI概述 一、GUI概述 GUI,Graphical UserInterface,图形用户接口。用图形的方法,来显示计算机界面,这样更方便更直观。 之前我们有再使用dos命令行,那是在图形化界面之前,我们需要记得好多命令,这样比较麻烦,操作不直观。有图形化界面之后,操作起来就比较直观,因为可以直接看到图形化的操作块儿,减少了大量的记忆时间。 java给图形界面的包主要有两个:java.A

catch_future的专栏 518

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

黑马程序员_循环语句、函数和数组

一,循环语句    while    ,do  while     ,for        1、while语句的格式   while(条件表达式){        执行语句;     }        2、do while 语句的格式 do{  执行语句 ;}while(条件表达式); 相比较if语句来说,while和do  while 语句是一个循环语句,在运行时候,如果条件表达式满足条件

catch_future的专栏 517

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

黑马程序员_面向对象(多态)

面向对象(多态) 多态概念 多态:可以理解为事物存在的多种体现形态。现实生活中的事物来说,猫,即是猫也是动物,一个人是男人也是人。就是说一个事物可以以不同形态来描述和表示,这就可以理解为多态。程序中,函数的重载性也是一种多态,同一个函数名在类中存在多个函数,但是具体体现方式不一样。 举例来说,比如:动物,都具有吃的行为,但每种动物吃的东西都不一样,所以可以定义成抽象。猫,是动物的一种,它吃鱼

catch_future的专栏 501

黑马程序员_网络编程

网络编程 一、网络编程概述 网络通讯,简单来说就是通过网络实现信息传输,像QQ,微信这些时下最流行的通讯工具,这些都是基于网络进行传输的。 网络通讯要素:IP地址,端口号,传输协议。 网络模型:OSI模型 TCP/IP模型。 对于网络通信要素的理解: 第一:我们有两台主机,想要把信息从一台主机A上传输到另一台主机上B,那么就得先找到这台主机的在哪儿,这里就需要IP地址,有点类似我们打电

catch_future的专栏 489

黑马程序员_String类及StringBuffer和StringBuilder概述和功能、基本数据类型

String类概述和功能 一、String类 字符串是一个特殊的对象。 只要是双引号括起来的,都是一个字符串对象,如:”abc”,”3344”,这都属于字符串对象。String  s  = “abc”;  s类类型变量,”abc”是一个对象。 String类中有很多够着函数,有空参数的构造函数,也有有参数的构造函数。这样看来, String s = new String(); Stri

catch_future的专栏 451

黑马程序员_面向对象(继承)

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、继承 关于继承的描述 我们在定义类的时候,比如电视和电脑类,在类中我们分别定义每个事物中的属性和行为,但是,具体看来,电视和电脑有共同的地方,比如都有有显示屏,都有插头,这些如果没定义一个类的话就会显得比较臃肿,所以可以把这些共有的或者说共性的东西提起出来,单独进行描述,只要让电

catch_future的专栏 432

黑马程序员_IO中其他流对象

IO流中其他对象   PrintWriter和PrintStream PrintWriter和PrintStream 打印流,为其他输出流添加了功能,是它们能够方便的打印各种数据值的表现形式。该流提供了答应方法,可以将各种数据类型的数据都原样打印。 字节打印流PrintStream,构造函数可以接受的类型: 1、File对象     File  2、字符串路径   String 3

catch_future的专栏 430

黑马程序员_Object和内部类

Object和内部类 一、Object类 Object类是层次类结构的根类,就是所有对象的直接父类或间接父类。里面一定定义的所有对象的都具备的功能。这个是隐式的。就相当于:                 class  Demo extends  Object 而extendsObject 其实是隐式的,但确实继承了Object类,并且具有类中的方法。查看API文档,常用的方法有:

catch_future的专栏 418

黑马程序员_多线程(概念和创建)

多线程一 一、多线程概念 提到线程,就得提到进程,进程就是正在进行中的程序。但是进程并不是多个程序同步执行他们,而是cpu逐个执行,先执行一个程序,然后执行另一个程序,cpu这是其实是在进行快速切换,只是速度很快,我们看起来像是在同步执行。 线程进程里的东西,理解的来说,比如迅雷中下载一个软件,这个软件通常看到的不是一个整体下载的,而是分成很多压缩包同时在下载,这多个压缩包就会同时向服务端请

catch_future的专栏 411
上一篇: 黑马程序员_多线程(线程安全和通信)
下一篇: 黑马程序员_集合(Map)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值