java:如何让程序从List集合中每次拿两条记录,拿到29 、30后,再次从第0、第1条开始拿

java:如何让程序从List集合中每次拿两条记录,拿到29 、30后,再次从第0、第1条开始拿,第1张

我写了如下代码供你参考,具体方法你可以自己写,有困惑可以追问,希望解决了你的问题~

import javautilArrayList;

import javautilList;public class Test { public static void main(String[] args) {

  // 创建一个测试的List集合

  List<Integer> list = new ArrayList<Integer>();

  //给集合循环赋值,i 可随便取值 30,31,32 

  for(int i= 1;i<32;i++){

   listadd(i);

  }

  int size = listsize(); //获取list的长度

  int cnt = 1; //跟踪第几次取值

  //开始取值,如果size%2==0,取size%2次,否则,多取一次

  if(size%2 == 0){ //如果listsize()是偶数,每次取两个,直到取完

   for(int i=0;i<size;i+=2){

    Systemoutprintln("第"+ cnt++ +"次取值"+listget(i)+"::" 

                        +(listget(i)+1));

    if(cnt==15){i=-2;cnt=1;} //这样会不断循环取值

   } 

  }else{  //如果listsize()是奇数,除余下的一个外都是每次取两个,最后取剩下的一个

   for(int i=0;i<=size;i+=2){

    if(i+1==size){//取剩下的一个     

     Systemoutprintln("第"+ cnt++ +"次取值"+listget(i));

    }else{

     Systemoutprintln("第"+ cnt++ +"次取值"+listget(i)+"::" 

                        +(listget(i)+1));

    }

    if(cnt==15){i=-2;cnt=1;} //这样会不断循环取值

   } 

  } }}

第一步:你的程序并未改变list内的元素,用指针却可以,你不明白是因为你不明白形参事拷贝本得过程。整体问题可以转换为更简单得

第二步:通过子函数修改元素值

#include<stdioh>

void modify(int a)

{

a = 0;

}

int main(void)

{

int a=1;

modify(a);

printf("%d", a);

getchar();

getchar();

return 0;

}

发现值并没有被修改,和你问得问题是一样得

第三步:从内存上面解决问题,形参是拷贝本

第四步:用指针为什么可以

第五步:综上,结构体也是同样得处理方案

学生实体类,包含姓名和年龄属性,

比较时先按姓名升序排序,如果姓名相同则按年龄升序排序。

第一种:实体类自己实现比较

(实现comparable接口:public interface Comparable<T> ,里面就一个方法声明:public int compareTo(T o); )

然后利用List类的sort(Comparator< super E> c)方法或javautilCollections工具类的sort(List<T> list) (其实里面就一句:listsort(null); )进行排序:

结果:

第二种:借助比较器进行排序。

示例代码:

比较器javautilComparator类是一个接口(public interface Comparator<T> ),包含int compare(T o1, T o2);等方法:

我们的比较器要实现该接口并实现compare方法:

比较的时候可以利用List的sort(Comparator< super E> c)方法(或者javautilCollections工具类的sort(List<T> list, Comparator< super T> c)方法)进行排序。

结果跟第一种方法一样:

Private Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT) As Long

Private Declare Function SetCursorPos Lib "user32" Alias "SetCursorPos" (ByVal x As Long, ByVal y As Long) As Long

Private Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)

Private Type RECT

Left As Long

Top As Long

Right As Long

Bottom As Long

End Type

先用GetWindowRect获得LIST控件的位置信息,我们需要知道它的LEFT和TOP值,即LIST控件相对于屏幕左上角的绝对位置(这里的所有API函数的参数都是以像素为单位),然后用SetCursorPos将鼠标移到所需的点,然后用mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0模拟一次鼠标单击,双击=两次单击

list脚本内容如下

#!/bin/bash

for i in $;do

if [ -f $i ];then

ls -l $i

elif [ -d $i ];then

ls -ld $i

else

ls -l $i 2> /errlog

fi

done

因为你没有保存那些项目

加上这些代码就行了

Private Sub Form_Load()

Dim Tmp As String

If Dir(AppPath & "/记录txt") <> "" Then

Open AppPath & "/记录txt" For Input As #1

Do Until EOF(1)

Line Input #1, Tmp

List1AddItem Tmp

Loop

Close #1

End If

End Sub

Private Sub Form_Unload(Cancel As Integer)

Dim i As Integer

Open AppPath & "/记录txt" For Output As #1

For i = 0 To List1ListCount - 1

Print #1, List1List(i)

Next i

Close #1

End Sub

以上就是关于java:如何让程序从List集合中每次拿两条记录,拿到29 、30后,再次从第0、第1条开始拿全部的内容,包括:java:如何让程序从List集合中每次拿两条记录,拿到29 、30后,再次从第0、第1条开始拿、为什么以下程序并未改变list内的元素、java 怎么将List里面数据排序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9491292.html

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

发表评论

登录后才能评论

评论列表(0条)

保存