标签: arraylist

ArrayList的数组与ArrayLists的数组相似

我正在创建一个TableModel,它将具有固定数量的列,但行数将会发生变化(大多数情况下,随着时间的推移而增加).哪种方法可以更好地存储数据,

ArrayList[] columns = new ArrayList[numberOfColumns];
// Each array element is one column. Fill each of them with a new ArrayList.
...
public Object getValueAt(int row, int column) {
    return columns[column].get(row);
}
Run Code Online (Sandbox Code Playgroud)

即创建一个ArrayLists 数组,每个数组ArrayList代表一列,或者:

ArrayList<Object[]> rows = new ArrayList<Object[]>();
// Each ArrayList element is one row.

public Object getValueAt(int row, int column) {
    return rows.get(row)[column];
}
Run Code Online (Sandbox Code Playgroud)

即创建一个包含数组的ArrayList,每个数组代表一行.

有哪些想法在速度或存储方面更有效?备选方案1要求ArrayList在每个添加的行中扩展N s,而备选方案2要求仅扩展一个,ArrayList但也创建长度为N的新数组(以表示新行).还是有一个明显的,更好的解决方案?

java arrays arraylist tablemodel data-structures

6
推荐指数
1
解决办法
1万
查看次数

ArrayList 与动态数组相比如何

anArrayList只是动态数组的接口吗?或者它们是同一回事吗?

like:ArrayList对应动态数组,HashMap对应Map?

除了我没有看到任何类似动态数组的Java API ,除非它是ArrayList?

在那种情况下,它们将是同一回事!

大概它们是同一回事?

java arraylist data-structures

6
推荐指数
1
解决办法
3862
查看次数

添加到 ArrayList 时如何避免“lambda 表达式中的参数类型不兼容”?

我有以下代码

public static List<Integer> topKFrequent(int[] nums, int k) {
  List<Integer> myList = new ArrayList<>();
  HashMap<Integer, Integer> map = new HashMap<>();

  for (int n : nums) {
    if (!map.containsKey(n)) map.put(n, 1);
    else map.put(n, map.get(n) + 1);
  }

  map.entrySet().stream()
    .sorted(Map.Entry.<Integer, Integer>comparingByValue().reversed())
    .limit(k)
    .forEach((key, value) -> myList.add(key));

  return myList;
}
Run Code Online (Sandbox Code Playgroud)

将forEach引发错误

Error:(20, 16) java: incompatible types: incompatible parameter types in lambda expression
Run Code Online (Sandbox Code Playgroud)

如何修复/避免此错误?我不太确定如何在这里应用解释问题的答案:Lambda Expression and generic method

编辑:

鉴于答案,更正是将 forEach 中的 lambda 替换为

.forEach((entry) -> myList.add(entry.getKey()));
Run Code Online (Sandbox Code Playgroud)

java lambda arraylist java-8 java-stream

6
推荐指数
2
解决办法
1万
查看次数

如何使用 lombok @Builder 和 @Data 初始化 ArrayList

使用 lombok 进行项目,我有一个 ArrayList。它为空,因为它从未初始化。在决定使用 lombok 删除大量样板代码之前,我最初在构造函数中初始化了它。

让它发挥作用的最简单的例子是什么?

示例:创建构建器后调用刷新会抛出空指针(注意:我省略了构建器中使用的变量,但parameters构建器中没有提及,所以也许我需要用它做一些事情)。

@Builder
public @Data class RMF_Objective {

   private ArrayList<String> parameters;

   public void refresh(){     
        parameters.clear(); // Clear for now
   }
}
Run Code Online (Sandbox Code Playgroud)

java arraylist lombok

6
推荐指数
1
解决办法
2万
查看次数

Java 的 ArrayList.sublist(startIndex, endIndex) 方法的时间复杂度是多少?

这个问题基本上说明了一切。假设我有一个(排序的)列表,可以包含 1K 到 1M 的任何项目。我有一个starting index和一个ending index。如果我使用该ArrayList.sublist(start, end)方法,时间复杂度是 O(n) 还是 O(1)?我确实在这里检查了答案,因为我认为这是一个常见问题,但是虽然我找到了 LinkedList 的重复答案,但我找不到关于 ArrayList 的具体问题。感谢大家的回答!

java arraylist time-complexity sublist constant-time

6
推荐指数
1
解决办法
3654
查看次数

从android kotlin中的文件夹中获取图像列表

我正在尝试使用此功能从文件夹中获取图像列表

var gpath:String = Environment.getExternalStorageDirectory().absolutePath
var spath = "testfolder"
var fullpath = File(gpath + File.separator + spath)
var list = imageReader(fullpath)

fun imageReader(root : File):ArrayList<File>{
    val a : ArrayList<File> ? = null
    val files = root.listFiles()
    for (i in 0..files.size){
        if (files[i].name.endsWith(".jpg")){
            a?.add(files[i])
        }
    }
    return a!!
}
Run Code Online (Sandbox Code Playgroud)

但我有这些例外:

java.lang.ArrayIndexOutOfBoundsException:length=3;index=3

kotin.kotlinNullPointerException

我读过这个问题,但我不知道如何解决它,

有什么帮助吗?

android arraylist nullpointerexception indexoutofboundsexception kotlin

6
推荐指数
2
解决办法
8087
查看次数

删除 ArrayList 的第一个不区分大小写的重复项

我有一个包含一些字符串的数组列表:

ArrayList<String> strList = new ArrayList<String>();
strList.addAll(Arrays.asList("interface", "list", "Primitive", "class", "primitive", "List", "Interface", "lIst", "Primitive"));
Run Code Online (Sandbox Code Playgroud)

我写了一个方法来删除数组列表中不区分大小写的字符串:

public static ArrayList<String> removeDuplicates(ArrayList<String> strList) {

    for(int i = 0; i < strList.size(); i++) {
        for(int j = i + 1; j < strList.size(); j++) {
            if(strList.get(i).equalsIgnoreCase(strList.get(j))){
                strList.remove(j);
                j--;
            }
        }
    }
    return strList;   
}
Run Code Online (Sandbox Code Playgroud)

输出:

[interface, list, Primitive, class]
Run Code Online (Sandbox Code Playgroud)

但是,我试图仅删除第一次出现的字符串。我正在尝试使其输出等于:

[Interface, lIst, Primitive, class]
Run Code Online (Sandbox Code Playgroud)

这将是数组列表中重复项的最后一次出现

我具体想做什么:

保留的字符串版本与最后一次出现的版本相同。换句话说,最后一次出现的版本保留在第一次出现的位置

java string arraylist

6
推荐指数
1
解决办法
1483
查看次数

如果 array 或 arrayList 引用了前一个元素,我如何实现一个返回 true 的函数?

如果任何歌曲包含对播放列表中上一首歌曲的引用,则该播放列表被视为重复播放列表。否则,播放列表将以指向空的最后一首歌曲结束。

我需要实现一个函数 isRepeatingPlaylist,如果播放列表重复,则返回 true,否则返回 false。

例如,以下代码打印“true”,因为两首歌曲都指向对方。

Song first = new Song("Hello");
Song second = new Song("Eye of the tiger");    
first.setNextSong(second);
second.setNextSong(first);    
System.out.println(first.isRepeatingPlaylist());
Run Code Online (Sandbox Code Playgroud)

再说一遍,这不是作业练习,我在做编码挑战,因为当我阅读有关编程概念的理论时,我几乎可以理解,但是当面临编写程序时,我不知道从哪里开始,也不知道如何应用。

public class Song {

    private String name;
    private Song nextSong;

    public Song(String name) {
        this.name = name;
    }

    public void setNextSong(Song nextSong) {
        this.nextSong = nextSong;
    }

    public boolean isRepeatingPlaylist() {
        //throw new UnsupportedOperationException("Waiting to be implemented.");
        List<String> list = new ArrayList<String>();
        list.add(one);
        list.add(two);
        list.add(three);
        list.add(four);

        if list.contains()
        return true;
        else
            return false;

    }

    public static void …
Run Code Online (Sandbox Code Playgroud)

java arrays arraylist

6
推荐指数
1
解决办法
3189
查看次数

在 Zig 中改变数组列表中的值

菜鸟问题:

我想改变数组列表中存在的值。我最初尝试获取索引项并直接更改其字段值。

const Foo = struct {
    const Self = @This();

    foo: u8,
};

pub fn main() anyerror!void {
    const foo = Foo {
      .foo = 1,
    };

    const allocator = std.heap.page_allocator;

    var arr = ArrayList(Foo).init(allocator);

    arr.append(foo) catch unreachable;

    var a = arr.items[0];

    std.debug.warn("a: {}", .{a});

    a.foo = 2;

    std.debug.warn("a: {}", .{a});                                                                                                                                                                                                                                                                                       
    std.debug.warn("arr.items[0]: {}", .{arr.items[0]});

    //In order to update the memory in [0] I have to reassign it to a.
    //arr.items[0] = a;
}
Run Code Online (Sandbox Code Playgroud)

然而结果却出乎我的意料:

a: Foo{ .foo = 1 …
Run Code Online (Sandbox Code Playgroud)

arraylist zig

6
推荐指数
1
解决办法
3031
查看次数

构建 IP 地址列表

我正在尝试根据用户的输入构建一组可能的 IP 地址。即 IP 地址和 CIDR 号码。我的最终目标是将此列表与单独的地址列表进行比较,并找出丢失的地址。

用户输入示例:192.168.1.0 /24 我想为 /24 网络的所有可能值构建一个数组(即 IP 地址可以是 192.168.1.0 - 192.168.1.255 之间的任何位置)

为了使其工作,我想我必须将 IP 地址转换为二进制,然后找到将成为网络主机部分的位,我在这里完成了:


function ConvertToBinary{
    param($ipAddress)
   
    [string]$binaryIP = -join ($ipAddress.Split('.') | ForEach-Object {[System.Convert]::ToString($_,2).PadLeft(8,'0')})

    return $binaryIP
}

function FindHost{
    param(
        [string]$binaryIPAddress,
        [int32]$CIDR
    )
    $hostBits = 32-$CIDR
    [string]$myHost = $binaryIPAddress.Substring($binaryIPAddress.Length-$hostBits)

    return $myHost
}


$myip = ConvertToBinary "192.168.3.1"
$myHost = FindHost  $myip 8

Run Code Online (Sandbox Code Playgroud)

我对如何继续感到有点困惑,所以如果有人可以帮助我或为我指出正确的方向,我将不胜感激

ip binary powershell arraylist

6
推荐指数
1
解决办法
5318
查看次数