c# 如何获取List中当前元素的索引

c# 如何获取List中当前元素的索引,第1张

fileListBinarySearch(aFile)

for(int i=0;i<fileListCount;i++)

{

ConsoleWriteLine(i);

}

List <string> fileList = new List<string>();

foreach (string aFile in fileList)

{

int idx= fileListIndexOf(aFile);//获取当前aFile的索引

ConsoleWriteLine(idx);//输出度aFile的索引

}

ConsoleReadLine();//屏幕停留

扩展资料:

字符数组的定义方式与一维数组、二维数组的定义方式类似,只不过数组的类型是char型。

例如:char s1;

定义了一个元素个数为6、数组名为S的字符数组,该字符数组中可以存放6个字符型数据。

例如:char s2;

定义了一个二维字符数组S,该数组可以存放3x6个字符型数据。

字符数组的初始化,即在声明的时候在后边直接赋值一个字符串。

如:char name[9]="xiaogang";

但是如果在声明语句以外的位置,就无法直接对整个数组直接赋值了,要把strcpy这个函数来实现。

而在这个字符数组中,包含了8个字符数据,即为八个元素,name[i]即为这个字符数组的元素名称,其中i可取0至8。

参考资料来源:百度百科-字符数组元素名称

List是有序的集合接口 该接口定义了 得到指定索引位置元素的方法

get(int index) //    返回列表中指定位置的元素。

以较为常用的ArrayList为例,  ArrayList的底层就是用我们熟悉的数组实现的

参考代码

import javautilArrayList;

public class ListDemo {

public static void main(String[] args) {

ArrayList<String> list = new ArrayList<String>();

listadd("张三");//添加元素

listadd("赵四");

listadd("王五");

String name =listget(2);// 和数组下标一样, 也是从0开始, 所以下标2就代表第3个元素

Systemoutprintln(name);// 输出 王五

}

}

具体步骤如下:

1、用list来演示,安装好python与pycharm之后,打开pycharm,新建Test_Listpy。

2、定义lista=('A','B','C','D','E'),使用len函数来判断数组长度,ALT+F10执行后可以看到结果是5,注意获取列表的值用数组名+[序号],例如想要获取第一个值'A',正确的写法是pirnt(lista[0]),注意中括号,且序号是0,数组是自然数排序,第一个序号是0。

3、通过数组名+[序号]可以获取数组里指定位置的元素值,有个前提是指定位置必须小于数组长度,以本例来讲,指定位置必须小于5,如果大于5,就会报长度错(out of range)。

4、在实际应用中,我们经常碰到复杂的数组,例如Listb={'A':0,'B':1,'C':2,'D':3,'E':4},注意我用的是大括号{},同意获取长度,发现长度仍然是5。

5、复杂数组想要获取正确的结果,指定的位置必须是数组索引,例如想要指定A得几分,要用数组名+索引名,写法是print(Listb['A']),即可获取数组中的元素。

一、list

list是python内置的有序的列表,可以随时添加和删除其中的元素

1、 定义

list_name = ["param1","param2","param3"]

2、访问

1)用索引来访问,索引从0开始

索引不可以越界,否则会报错,最后一个元素的索引是len(city) - 1

2)还可以从后开始访问 最后一个元素的索引为-1 依次类推,第一个元素的索引为-len(city)

>>> city[-1]

>>> '广州'

3、元素的追加

4、元素的插入

在city的索引1处增加 重庆

>>> cityinsert(1,'重庆')

>>> city

>>> ['北京', '重庆', '上海', '广州', '南京']

5、元素的删除

1)删除末尾

2)删除指定位置元素 pop(i),i为索引值

6、元素的替换

7、二维list

访问的时候 我们就可以直接 city[1][0] city[1][1]来访问 其中的元素值

二、tuple(元组)

tupe和list的最大的区别就是 tuple一旦被创建 就无法修改

1、定义

2、访问

和list是一样的 country[0],country[1]。由于tuple是不可变的,所以没有append 和insert 函数

3、 一个元素的tuple

我们发现 当tuple的元素只有一个元素的时候,python会认为括号就是小括号的功能,就会按照整数或者字符串解析,为了解决这个问题,python规定这种情况 在后面加一个逗号','就可以

4、 tuple的指向不变

你会惊讶,怎么可以变了呢

其实在python内部,c[0],c[1]指向 1 和 2,而c[2]是指向的一个list对象,其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变

同:三个类都是实现了List接口,存储数据的特点相同:存储有序的、可重复的数据

异:

ArrayList:是用的最多得,线程不安全所以效率高。底层使用Object[] elementData数组存储

LinkedList:对于平凡的插入、删除 *** 作效率更高,因为底层是双向链表(ArrayList的话要一个个移,但是查找多还是

ArrayList好)

Vector:10的时候出的古老实现类,其他包括List本身都是12出的;线程安全效率慢,其他和ArrayList差不多底层也是数组。接班不用

ArrayList:

jdk70的时候:

ArrayList list = new ArrayList();// 底层创建了长度是10的数组

当添加的元素数量超过数组容量了就扩容, 默认情况下扩容15倍 ,并复制到新数组里。(和StringBuilder很像)

建议开发中使用带参数的构造器:

new ArrayList(int capacity)

jdk80的时候:

new ArrayList();//底层初始化为{},第一次add时才创建长度为10的数组,其他一样

好处:延迟数组的创建,节省内存

Vector:

如果没给capacity一开始也初始化长度为10的数组(类ArrayList70),但是扩容的时候扩为原来的2倍

Linked list = new LinkedList();//内部声明了Node类型的first和last属性,默认值为null

listadd(“something”);//创建node并将数据装到node里

其中Node定义为:

//是linkedlist的一个内部类

private static class Node<E>{

E item;//数据

Node<E> next;

Node<E> prev;

Node(Node<E> prev,Node<E> next,Node<E> next){

thisitem = element;

thisnext = next;

this,prev = prev

}

}

List除了从Collection集合继承的方法外,List 集合里添加了一些根据索引来 *** 作集合元素的方法。

void add(int index, Object ele):在index位置插入ele元素

boolean addAll(int index, Collection eles):从index位置开始将eles中的所有元素添加进来

Object get(int index):获取指定index位置的元素

int indexOf(Object obj):返回obj在集合中首次出现的位置,找不到就-1

int lastIndexOf(Object obj):返回obj在当前集合中末次出现的位置,找不到就-1

Object remove(int index):移除指定index位置的元素,并返回此元素

Object set(int index, Object ele):设置指定index位置的元素为ele

List subList(int fromIndex, int toIndex):返回从fromIndex到toIndex位置的子集合

总结常用方法:

增:add(Object)

删:remove(Object)/remove(index)

改:set(index,Object)

查:get(index)

插入:add(index,Object)

长度:size()

遍历:

1iterator

 2for(Object o : list)

 3for(int i =0;i<listsize();i++)

这是foreach的

using System;

using SystemCollections;

namespace ConsoleApplication1

{

/// <summary>

/// Class1 的摘要说明。

/// </summary>

class Class1

{

/// <summary>

/// 应用程序的主入口点。

/// </summary>

[STAThread]

static void Main(string[] args)

{

//

// TODO: 在此处添加代码以启动应用程序

//

ArrayList arraylist = new ArrayList();

arraylistAdd("Hello");

arraylistAdd("World");

arraylistAdd("!");

foreach (string s in arraylist)

{

ConsoleWrite( "{0}\n", s );

}

}

}

}

ArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处。

List 接口的大小可变数组的实现,位于API文档的javautilArrayList<E>。实现了所有可选列表 *** 作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来 *** 作内部用来存储列表的数组的大小。(此类大致上等同于 Vector 类,除了此类是不同步的。)

size、isEmpty、get、set、iterator 和 listIterator *** 作都以固定时间运行。add *** 作以分摊的固定时间 运行,也就是说,添加 n 个元素需要 O(n) 时间。其他所有 *** 作都以线性时间运行(大体上讲)。与用于 LinkedList 实现的常数因子相比,此实现的常数因子较低。

把List看成数组,用下标形式取。

例如:取第一个元素:List<String> list =new List<String>();String string=list[0];

函数解析:String类是不可变的,对String类的任何改变,都是返回一个新的String类对象。 String 对象是 SystemChar 对象的有序集合,用于表示字符串。String 对象的值是该有序集合的内容,并且该值是不可变的,

你可以这么写:

for(int i=0;i<listsize();i++)

{

UserForm user=(UserForm)listget(i);

String password=usergetPassword;

}

以上就是关于c# 如何获取List中当前元素的索引全部的内容,包括:c# 如何获取List中当前元素的索引、Java中list读取第X位、如何访问数组中的元素等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10151294.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存